From 13c931c93961cdaa85b6fe77f455bae1c9b19b98 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 2 Feb 2012 09:09:37 +0100 Subject: re PR tree-optimization/52073 (ICE: vector VEC(vec_void_p,base) index domain error, in vinfo_for_stmt at tree-vectorizer.h:620) PR tree-optimization/52073 * tree-vect-stmts.c (vect_mark_relevant): When checking uses of a pattern stmt for pattern uses, ignore uses outside of the loop. * gcc.c-torture/compile/pr52073.c: New test. From-SVN: r183829 --- gcc/tree-vect-stmts.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/tree-vect-stmts.c') diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 8e2b5fe..8532fd8 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -150,6 +150,8 @@ vect_mark_relevant (VEC(gimple,heap) **worklist, gimple stmt, use_operand_p use_p; gimple use_stmt; tree lhs; + loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info); + struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo); if (is_gimple_assign (stmt)) lhs = gimple_assign_lhs (stmt); @@ -166,6 +168,9 @@ vect_mark_relevant (VEC(gimple,heap) **worklist, gimple stmt, continue; use_stmt = USE_STMT (use_p); + if (!flow_bb_inside_loop_p (loop, gimple_bb (use_stmt))) + continue; + if (vinfo_for_stmt (use_stmt) && STMT_VINFO_IN_PATTERN_P (vinfo_for_stmt (use_stmt))) { -- cgit v1.1