------- Comment #2 from pinskia at gcc dot gnu dot org 2008-04-07 01:46 ------- (In reply to comment #1) > Confirmed. I think this is the same issue as PRE of globals.
It is as if you change the source to be: int g, g2; int foo(int p, int *gp) { int t = 0; if (p) t = *gp + 1; return (*gp + t); } --- CUT --- We get the correct optimization: foo (p, gp) { int prephitmp.9; int t; <bb 2>: if (p != 0) goto <bb 4>; else goto <bb 3>; <bb 3>: prephitmp.9 = *gp; t = 0; goto <bb 5>; <bb 4>: prephitmp.9 = *gp; t = prephitmp.9 + 1; <bb 5>: return prephitmp.9 + t; } *** This bug has been marked as a duplicate of 23455 *** -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |DUPLICATE http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35287