http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35545
--- Comment #8 from Jeffrey A. Law <law at redhat dot com> --- It's not a matter of cost model, but if propagating the values to their uses. I haven't looked closely at the tracer, but wouldn't it benefit by having constants in particular propagated to their uses? Yes, DOM's duplication/isolation of paths exposes the degenerate PHIs. So we might have had: One of the nice side effects of jump threading is that it isolates paths. So we might have had BBn x = phi (a, b, c, constant, d, e, f) duplication for threading might turn that into BBn: x = phi (a, b, c, d, e, f) // The original elsewhere BBm: x' = phi (constant) // the duplicate Propagating the constant for x' in BBm and eliminating the degenerate is what the phi-only cprop pass does. If the tracer generates similar things, then running phi-only cprop after it might be useful as well. It *should* be very fast.