We fail in verify_ssa because /net/pherkad/scratch/rguenth/gcc/gcc/testsuite/gcc.c-torture/execute/20031215-1.c:11: error: Statement makes a memory store, but has no V_MAY_DEFS nor V_MUST_DEFS # VUSE <ao_1>; ao.ch[2] = 0; /net/pherkad/scratch/rguenth/gcc/gcc/testsuite/gcc.c-torture/execute/20031215-1.c:11: internal compiler error: verify_ssa failed.
which is because we strip const qualifiers from lvalues in tree_ssa_useless_type_conversion which finally happens during 46.store_copyprop: test1 () { char * D.1575; char * D.1574; long unsigned int D.1573; char D.1572; int D.1571; <bb 0>: # VUSE <ao_1>; D.1571_2 = ao.l; # VUSE <ao_1>; D.1572_3 = ao.ch[2]; if (D.1572_3 != 0) goto <L0>; else goto <L1>; <L0>:; D.1573_5 = 2; D.1574_6 = 2B; D.1575_7 = &ao.ch[2]; # TMT.0_9 = V_MAY_DEF <TMT.0_8>; *D.1575_7 = 0; <L1>:; return; } look how the cast is gone, before (44.phiopt2) we had: <L0>:; D.1573_5 = (long unsigned int) D.1571_2; D.1574_6 = (char *) D.1573_5; D.1575_7 = D.1574_6 + &ao.ch[0]; # TMT.0_9 = V_MAY_DEF <TMT.0_8>; *D.1575_7 = 0; 48.alias5 will now happily remove the V_MAY_DEF: <L0>:; D.1573_5 = 2; D.1574_6 = 2B; D.1575_7 = &ao.ch[2]; # VUSE <ao_1>; *D.1575_7 = 0; No idea how to fix this. -- Summary: [4.1 regression] gcc.c-torture/execute/20031215-1.c ICEs Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21545