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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-03-18
            Summary|[4.8 regression] internal   |[4.8/4.9 regression]
                   |compiler error: in          |internal compiler error: in
                   |find_lattice_value, at      |find_lattice_value, at
                   |tree-complex.c:15           |tree-complex.c:15
     Ever Confirmed|0                           |1

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-18 
08:26:32 UTC ---
Reduced testcase (-O3):
struct A { _Complex double a; };
struct B { A *b; void foo (void *); };

A
operator / (A x, A y)
{
  A r;
  r.a = x.a / y.a;
  return r;
}

void
B::foo (void *x)
{
  if (__real__ b[0].a)
    b[0] = (static_cast <B *>(x))->b[0] / b[0];
  else
    b[0] = (static_cast <B *>(x))->b[0];
}

The ICE is actually
pr56635.C: In member function ‘void B::foo(void*)’:
pr56635.C:13:1: error: invalid PHI argument
 B::foo (void *x)
 ^
MEM[(const struct A &)_9]
pr56635.C:13:1: error: incompatible types in PHI argument 1
complex double

const struct A

cstore_10 = PHI <_11(3), MEM[(const struct A &)_9](4)>

pr56635.C:13:1: internal compiler error: verify_gimple failed

and looks like cselim bug.
Started with http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=186501 but guess
it just has been latent before that.

Reply via email to