http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46526

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2010-11-19 
08:56:05 UTC ---
Looks to me like a tree sharing problem in the FE, will debug it.

int
main ()
{
  B b;
  A a;
}

is in *.original as:
    struct B b;
  <<cleanup_point <<< Unknown tree: expr_stmt
  (void) (b = TARGET_EXPR <D.1439, {.D.1372={._vptr.Base=&_ZTV1A + 16}}>)
>>>>>;
    struct A a;
  <<cleanup_point <<< Unknown tree: expr_stmt
  (void) (a = TARGET_EXPR <D.1468, {.D.1363={._vptr.Base=&_ZTV1A + 16}}>)
>>>>>;
while
int
main ()
{
  A a;
  B b;
}
as:
    struct A a;
  <<cleanup_point <<< Unknown tree: expr_stmt
  (void) (a = TARGET_EXPR <D.1439, {.D.1363={._vptr.Base=&_ZTV1B + 16}}>)
>>>>>;
    struct B b;
  <<cleanup_point <<< Unknown tree: expr_stmt
  (void) (b = TARGET_EXPR <D.1468, {.D.1372={._vptr.Base=&_ZTV1B + 16}}>)
>>>>>;
One would expect a being initialized with _ZTV1A + 16 and b with _ZTV1B + 16 in
both cases...

Reply via email to