[RFA] Setting long long bitfields

Paul Hilfinger hilfingr@EECS.Berkeley.EDU
Sun Oct 31 23:04:00 GMT 2004

 > > One possible tweak, several of us have an aversion to "?:", it would be
 > > nice if it wasn't there :-)
 > Like this perhaps:
 > +  ULONGEST mask = (ULONGEST) -1 >> (8 * sizeof (ULONGEST) - bitsize);


I had considered exactly that line, but unfortunately ran across the
following really irritating provision in the C standard:

    "If the value of the right operand is negative or is 
     *greater than or equal to* the width of the promoted left
     operand, the behavior is undefined."

[I know why the provision is there, of course: many machines treat a
shift of wordsize bits as 0, because they mask off bits to the left,
but it's STILL irritating.]

Now, I presume we will never encounter a bitfield size of 8 * sizeof
(ULONGEST), but the original code apparently tried to bullet-proof
against this possibility, so I just went along.


More information about the Gdb-patches mailing list