https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78396
Bug ID: 78396 Summary: [7 regression] gcc.dg/vect/bb-slp-cond-1.c FAILs after fix for PR77848 Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: wschmidt at gcc dot gnu.org Target Milestone: --- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77848 identified a case where if-conversion modified a loop that was not subsequently vectorized, with the resulting code being significantly worse than without if-conversion. Since if-conversion has no cost model, this was resolved by requiring loop versioning for all if-converted loops unless if-conversion was specifically requested. There was one bit of fallout from this, as gcc.dg/vect/bb-slp-cond-1.c now fails. This test expected if-converted input that the BB vectorizer would be able to handle after the loop vectorizer failed on it. There are two ways this can be resolved: - Improve the data dependence analysis in the loop vectorizer; or - Teach the basic block vectorizer to if-convert PHIs in otherwise straight-line code.