middle-end/9725: Invalid dependency determination

Jan Beulich JBeulich@novell.com
Thu Feb 20 07:40:00 GMT 2003


Which doesn't work (and possibly doesn't have to as outlined in the
other mail, depending on how you interpret the wording of the standard)
when used as

  (&u.s)->f1 = x;
  (&u.s)->f2 = y;

which is (supposedly) equivalent to the use of the . operator...

Jan

>>> Momchil Velikov <velco@fadata.bg> 19.02.03 22:10:36 >>>
>>>>> "Jan" == Jan Beulich <JBeulich@novell.com> writes:

    Jan> But why is the structure incompatible?
    Jan> "... an aggregate or union type that includes one of the
aforementioned
    Jan> types among its
    Jan> members (including, recursively, a member of a subaggregate
or
    Jan> contained union), ..."

which means that you example should be coded as

struct s
{
  unsigned f1:16;
  unsigned f2:16;
};

void
test (unsigned *pf, unsigned x, unsigned y)
{
  union
  {
    unsigned f;
    struct s s;
  } u;

  u.s.f1 = x;
  u.s.f2 = y;
  
  *pf = u.f;
}


~velco



More information about the Gcc-bugs mailing list