On Thu, Apr 19, 2012 at 7:56 PM, Thomas Schwinge <tho...@codesourcery.com> wrote: > Hi! > > On Thu, 19 Apr 2012 19:46:17 +0200, I wrote: >> diff -ru fnsvb/20030922-1.c.003t.original fsvb/20030922-1.c.003t.original >> --- fnsvb/20030922-1.c.003t.original 2012-04-19 16:51:18.322150866 +0200 >> +++ fsvb/20030922-1.c.003t.original 2012-04-19 16:49:18.132088498 +0200 >> @@ -7,7 +7,7 @@ >> switch ((int) common->code) >> { >> case 0:; >> - if (common->code != 0) >> + if ((BIT_FIELD_REF <*common, 32, 0> & 255) != 0) >> { >> abort (); >> } >> >> That is, for -fno-strict-volatile-bitfields the second instance of >> »common->code« it is a component_ref, whereas for >> -fstrict-volatile-bitfields it is a bit_field_ref. > > Looking at 20030922-1.c.001t.tu I see this: > > @2838 bit_field_ref type: @25 > > Where are the operands? Is the following patch correct/OK to check in?
Ok. Thanks, Richard. > gcc/ > * tree-dump.c (dequeue_and_dump) <BIT_FIELD_REF>: Dump the three child > nodes. > > Index: tree-dump.c > =================================================================== > --- tree-dump.c (revision 186430) > +++ tree-dump.c (working copy) > @@ -596,6 +596,7 @@ dequeue_and_dump (dump_info_p di) > break; > > case COMPONENT_REF: > + case BIT_FIELD_REF: > dump_child ("op 0", TREE_OPERAND (t, 0)); > dump_child ("op 1", TREE_OPERAND (t, 1)); > dump_child ("op 2", TREE_OPERAND (t, 2)); > > Now I see: > > @2838 bit_field_ref type: @25 op 0: @2847 op 1: @2848 > op 2: @20 > > > Grüße, > Thomas