===================================================================
@@ -257,6 +257,12 @@ lappend VECT_SLP_CFLAGS "-fno-tree-reassoc"
dg-runtest [lsort [glob -nocomplain
$srcdir/$subdir/no-tree-reassoc-bb-slp-*.\[cS\]]] \
"" $VECT_SLP_CFLAGS
+# -fno-tree-fre
+set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
+lappend DEFAULT_VECTCFLAGS "-fno-tree-fre"
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-fre-*.\[cS\]]] \
+ "" $DEFAULT_VECTCFLAGS
+
# Clean up.
set dg-do-what-default ${save-dg-do-what-default}
===================================================================
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+
+extern unsigned char g_5;
+extern int g_31, g_76;
+int main(void) {
+ int i, j;
+ for (j=0; j < 2; ++j) {
+ g_31 = -3;
+ for (i=0; i < 2; ++i)
+ g_76 = (g_31 ? g_31+1 : 0) ^ g_5;
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
===================================================================
@@ -897,7 +897,8 @@ vect_operation_fits_smaller_type (gimple stmt, tre
else
{
first = true;
- if (!widened_name_p (oprnd, stmt, &half_type, &def_stmt, false))
+ if (!widened_name_p (oprnd, stmt, &half_type, &def_stmt, false)
+ || !vinfo_for_stmt (def_stmt))
return false;
}