https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116835
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The case where we want still do it on the back edge is something like: ``` int a; int b; int bar (int c) __attribute__((noipa, noinline)); int bar (int c) { int *p = &a; for (int j = 0; j < *p; ++j) { //asm volatile(""::"r"(p)); p = &b; } return *p; } ``` But ch handles that so maybe just not doing it on back-edges are ok. And then get the optimization back that we sometimes lost due to that we have to rerun phiprop after ch. I think that will work.