This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] Setting long long bitfields


 > > 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);

Andreas,

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.

Paul


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]