https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54544

Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |manu at gcc dot gnu.org
         Resolution|---                         |DUPLICATE

--- Comment #5 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
This has nothing to do with volatile, as this reduced testcase shows:

int fct2(void);

int fct(int *p);
static int foo(int * p )
{
    do {
       if ( *p )
         {
           return fct( p );
         }
    }
    while ( fct2()  );
    return 0;
}
int bar()
 {
    int i;
    return foo( &i );
}

The issue here is that the testcase creates virtual phis 

# .MEM_9 = PHI <.MEM_1(D)(2), .MEM_12(7)>

and this is not handled by the uninit pass yet.

*** This bug has been marked as a duplicate of bug 19430 ***

Reply via email to