https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65440
Bug ID: 65440 Summary: pass_lim misses support for predicated code motion Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vries at gcc dot gnu.org tree-ssa-loop-im.c ( https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/tree-ssa-loop-im.c;h=9aba79ba776944ec6fba8459354deabe8c126b75;hb=HEAD#l74 ): ... /* TODO: Support for predicated code motion. I.e. while (1) { if (cond) { a = inv; something; } } Where COND and INV are invariants, but evaluating INV may trap or be invalid from some other reason if !COND. This may be transformed to if (cond) a = inv; while (1) { if (cond) something; } */ ...