2013-01-03 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/55857
+ * tree-vect-stmts.c (vectorizable_load): Do not setup
+ re-alignment for invariant loads.
+
+2013-01-03 Richard Biener <rguenther@suse.de>
+
PR lto/55848
* lto-symtab.c (lto_symtab_merge_decls_1): As last resort, always
prefer a built-in decl.
+2013-01-03 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/55857
+ * gcc.dg/vect/pr55857-1.c: New testcase.
+ * gcc.dg/vect/pr55857-2.c: Likewise.
+
2013-01-03 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/55838
--- /dev/null
+/* { dg-do compile } */
+
+void
+foo (int *data, unsigned len, const int qlp_coeff[], int lp, int residual[])
+{
+ int i;
+ int sum;
+ for(i = 0; i < (int)len; i++)
+ {
+ sum = 0;
+ sum += qlp_coeff[1] * data[i-2];
+ sum += qlp_coeff[0] * data[i-1];
+ residual[i] = data[i] - (sum >> lp);
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
--- /dev/null
+/* { dg-do compile } */
+
+void foo (int *data, unsigned len, const int qlp_coeff[],
+ unsigned order, int lp, int residual[])
+{
+ int i;
+ int sum;
+ if(order == 2)
+ for(i = 0; i < (int)len; i++)
+ {
+ sum = 0;
+ sum += qlp_coeff[1] * data[i-2];
+ sum += qlp_coeff[0] * data[i-1];
+ residual[i] = data[i] - (sum >> lp);
+ }
+ else
+ for(i = 0; i < (int)len; i++)
+ residual[i] = data[i] - ((qlp_coeff[0] * data[i-1]) >> lp);
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
if ((alignment_support_scheme == dr_explicit_realign_optimized
|| alignment_support_scheme == dr_explicit_realign)
- && !compute_in_loop)
+ && !compute_in_loop
+ && !integer_zerop (DR_STEP (dr)))
{
msq = vect_setup_realignment (first_stmt, gsi, &realignment_token,
alignment_support_scheme, NULL_TREE,