From: Jim Meyering

> Thanks for confirming.

   Glad to.  It was (almost) the least I could do.

> Do you know of a modern optimizing compiler that fails
> to elide the dead code?  If so, please let us know.

   I realize that continuing this discussion is almost certainly
pointless, but, just for the record, ...

   It's not absolutely clear that "Compaq C V6.4-005 on OpenVMS VAX
V7.3" qualifies as "modern", but one of the advantages of using the C
preprocessor as it was intended to be used is that one doesn't need to
_care_ whether the compiler proper can optimize away some useless code,
because it will never see that useless code.

> +         dfa->word_char[0] = bits1 << 31 << 1 | bits0;

   That two-piece shift does avoid -- I almost wrote "neatly avoids",
but decided that that wouldn't be accurate -- a complaint like this:

%CC-W-SHIFTCOUNT, In this statement, the shift count "32" is negative or
is greater than or equal to the promoted size of the operand "bits1".

which I appreciated, but it's not immediately obvious (to me) that the
code for two shifts and an OR will necessarily be more efficient (in
space or time) than the code for an assignment.

   But, hey.  If "Parentheses good, pound-sign ba-a-a-ad" is the guiding
princlple these days, then I'll just sit here on my scrap heap with the
rest of the fossils, and yearn for the good old days of fretting over
bytes and microseconds.

   I'm still glad to see a fix, even though I'm confident that this
particular fix will never be my favorite piece of code.

------------------------------------------------------------------------

   Steven M. Schweda               sms@antinode-info
   382 South Warwick Street        (+1) 651-699-9818
   Saint Paul  MN  55105-2547

Reply via email to