aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-stmts.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r--gcc/tree-vect-stmts.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 1b79ace..43fc51c 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -5791,6 +5791,20 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
"group loads with negative dependence distance\n");
return false;
}
+
+ /* Similarly when the stmt is a load that is both part of a SLP
+ instance and a loop vectorized stmt via the same-dr mechanism
+ we have to give up. */
+ if (STMT_VINFO_GROUP_SAME_DR_STMT (stmt_info)
+ && (STMT_SLP_TYPE (stmt_info)
+ != STMT_SLP_TYPE (vinfo_for_stmt
+ (STMT_VINFO_GROUP_SAME_DR_STMT (stmt_info)))))
+ {
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ "conflicting SLP types for CSEd load\n");
+ return false;
+ }
}