------- Comment #4 from rguenth at gcc dot gnu dot org 2007-08-24 13:11 ------- Shorter testcase, fails at -O:
static void ConvertAddr (char *saddr, void **addr) { *addr = (void *) &saddr; } void DefineSelf (char *addr) { ConvertAddr (addr, (void **) &addr); if (addr[0] == 127 && addr[3] == 1) ; } this is a type problem. Before forwprop2 we have char * saddr; char D.2013; <bb 2>: addr_1 = addr_7(D); saddr = addr_1; addr_10 = &saddr; addr_2 = addr_10; D.2013_3 = *addr_2; return; note that addr_10 = &saddr; misses a cast. It's an assignment from char** to char*. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2007-08-23 20:59:20 |2007-08-24 13:11:02 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33166