diff options
author | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-14 09:21:15 +0000 |
---|---|---|
committer | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-14 09:21:15 +0000 |
commit | 42a6710ebf7274ea426e50765cb57149e656d483 (patch) | |
tree | 6da9c4af4cb3e9b8356610815ee0416a055f567b /gcc/tree-vect-data-refs.c | |
parent | a324d015e849fb5555910d284c4b82b02cc1717c (diff) | |
download | gcc-42a6710ebf7274ea426e50765cb57149e656d483.tar.gz |
PR tree-optimization/45470
* tree-vect-data-refs.c (vect_analyze_data_refs): Fail if a statement
can throw an exception.
* tree-vect-stmts.c (vectorizable_call): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164270 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vect-data-refs.c')
-rw-r--r-- | gcc/tree-vect-data-refs.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index ff4f0dbe050..264a107b71b 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -2542,6 +2542,17 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo, offset = unshare_expr (DR_OFFSET (dr)); init = unshare_expr (DR_INIT (dr)); + if (stmt_could_throw_p (stmt)) + { + if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS)) + { + fprintf (vect_dump, "not vectorized: statement can throw an " + "exception "); + print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM); + } + return false; + } + /* Update DR field in stmt_vec_info struct. */ /* If the dataref is in an inner-loop of the loop that is considered for |