------- Comment #11 from steven at gcc dot gnu dot org 2010-02-08 16:45 ------- Trunk today (r156595) optimizes this at -O1, -Os, and -O2 in the tree optimizers. The .fre pass removes the first func call, then .dom1 removes the next two. The .dom2 pass removes the remaining one.
If I add another, say, 10 lines of "if (outcnt == 1) func ();", then dom1 removes them all (even with -fno-tree-fre). So something changed in (or for) DOM that allows it to clean up this mess completely. I would like to know what... Perhaps the OP can try to bisect to identify what was changed here (in the hope that it is something that can be back-ported to GCC 4.4)? -- steven at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |WAITING http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42494