aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-05-18 16:01:08 +0200
committerRichard Biener <rguenther@suse.de>2020-05-28 12:25:15 +0200
commitb0aae85bd689cf581ac85d02a7e84eae0015dbe5 (patch)
treec025a24fce850a520e8a754cce53742aa78c2dfd /gcc
parent09df85393ce5501a28359d159670fd05c4d70abf (diff)
downloadgcc-b0aae85bd689cf581ac85d02a7e84eae0015dbe5.zip
gcc-b0aae85bd689cf581ac85d02a7e84eae0015dbe5.tar.gz
gcc-b0aae85bd689cf581ac85d02a7e84eae0015dbe5.tar.bz2
make vect_finish_stmt_generation work w/o stmt_vec_info
This makes the call chain below vec_init_vector happy with a NULL stmt_vec_info which is used as "context". 2020-05-27 Richard Biener <rguenther@suse.de> * tree-vect-stmts.c (vect_finish_stmt_generation_1): Conditionalize stmt_info use, assert the new stmt cannot throw when not specified. (vect_finish_stmt_generation): Adjust assert.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-stmts.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index ff335aa..58fb93d 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -1668,14 +1668,19 @@ vect_finish_stmt_generation_1 (vec_info *vinfo,
if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location, "add new stmt: %G", vec_stmt);
- gimple_set_location (vec_stmt, gimple_location (stmt_info->stmt));
+ if (stmt_info)
+ {
+ gimple_set_location (vec_stmt, gimple_location (stmt_info->stmt));
- /* While EH edges will generally prevent vectorization, stmt might
- e.g. be in a must-not-throw region. Ensure newly created stmts
- that could throw are part of the same region. */
- int lp_nr = lookup_stmt_eh_lp (stmt_info->stmt);
- if (lp_nr != 0 && stmt_could_throw_p (cfun, vec_stmt))
- add_stmt_to_eh_lp (vec_stmt, lp_nr);
+ /* While EH edges will generally prevent vectorization, stmt might
+ e.g. be in a must-not-throw region. Ensure newly created stmts
+ that could throw are part of the same region. */
+ int lp_nr = lookup_stmt_eh_lp (stmt_info->stmt);
+ if (lp_nr != 0 && stmt_could_throw_p (cfun, vec_stmt))
+ add_stmt_to_eh_lp (vec_stmt, lp_nr);
+ }
+ else
+ gcc_assert (!stmt_could_throw_p (cfun, vec_stmt));
return vec_stmt_info;
}
@@ -1705,7 +1710,7 @@ vect_finish_stmt_generation (vec_info *vinfo,
stmt_vec_info stmt_info, gimple *vec_stmt,
gimple_stmt_iterator *gsi)
{
- gcc_assert (gimple_code (stmt_info->stmt) != GIMPLE_LABEL);
+ gcc_assert (!stmt_info || gimple_code (stmt_info->stmt) != GIMPLE_LABEL);
if (!gsi_end_p (*gsi)
&& gimple_has_mem_ops (vec_stmt))