Jeffrey A Law wrote: > On Wed, 2005-04-27 at 16:19 +0200, Richard Guenther wrote: > >>fold_indirect_ref, called from the gimplifier happily converts >> >> const char *a; >> >>... >> >> *(char *)&a[x] = 0; >> >>to >> >> a[x] = 0; >> >>confusing alias1 and ICEing in verify_ssa: >> >>/net/alwazn/home/rguenth/src/gcc/cvs/gcc-4.1/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[D.1242_5] = 0; >>/net/alwazn/home/rguenth/src/gcc/cvs/gcc-4.1/gcc/testsuite/gcc.c-torture/execute/20031215-1.c:11: >>internal compiler error: verify_ssa failed. >> >>happens only for patched gcc where C frontend and fold happen to >>produce .02.original: >> >>;; Function test1 (test1) >>;; enabled by -tree-original >> >> >>{ >> if (ao.ch[ao.l] != 0) >> { >> *(char *) &ao.ch[(unsigned int) ao.l] = 0; >> } >>} >> >>then, generic is already wrong: >> >>test1 () >>{ >> int D.1240; >> char D.1241; >> unsigned int D.1242; >> >> D.1240 = ao.l; >> D.1241 = ao.ch[D.1240]; >> if (D.1241 != 0) >> { >> D.1240 = ao.l; >> D.1242 = (unsigned int) D.1240; >> ao.ch[D.1242] = 0; >> } >> >>(not the missing cast). >> >> >>something like the following patch fixes this. > > How ironic. I ran into a similar problem with the fold-after-TER > patches. I just killed the STRIP_NOPS call, but using STRIP_TYPE_NOPS > might be a better solution.
So is the patch ok for mainline? It happened to be in during a bootstrap and regtest on i686-linux for c only. Richard.