Daniel is aware of the problem. In the followign example, *gp at return is partially redundant. Not eliminated.
int *gp; int g, g2; int foo(int p) { int t = 0; if (p) t = *gp + 1; return (*gp + t); } -- Summary: Missing PRE for indirect load Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: xinliangli at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35287