http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902
Bug #: 56902 Summary: Fails to SLP with mismatched +/- and negatable constants Classification: Unclassified Product: gcc Version: 4.9.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: rgue...@gcc.gnu.org Blocks: 53947 double x[1024], y[1024], z[1024]; void foo (double w) { int i; for (i = 0; i < 1023; i+=2) { z[i] = x[i] + 3.; z[i+1] = x[i+1] + -3.; } } void bar (double w) { int i; for (i = 0; i < 1023; i+=2) { z[i] = x[i] + w; z[i+1] = x[i+1] + -3.; } } void baz (double w) { int i; for (i = 0; i < 1023; i+=2) { z[i] = x[i] - w; z[i+1] = x[i+1] + 3.; } }