diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/tree-vect-data-refs.c | 9 | ||||
-rw-r--r-- | gcc/tree-vect-loop.c | 5 |
3 files changed, 17 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 67f562c..bc333f2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-06-29 Richard Biener <rguenther@suse.de> + + * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert + compute_all_dependences succeeds. + * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we + exceed --param loop-max-datarefs-for-datadeps. + 2018-06-29 Jakub Jelinek <jakub@redhat.com> * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H. diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 9f848fe..63429a3 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -575,10 +575,11 @@ vect_analyze_data_ref_dependences (loop_vec_info loop_vinfo, * LOOP_VINFO_DATAREFS (loop_vinfo).length ()); /* We need read-read dependences to compute STMT_VINFO_SAME_ALIGN_REFS. */ - if (!compute_all_dependences (LOOP_VINFO_DATAREFS (loop_vinfo), - &LOOP_VINFO_DDRS (loop_vinfo), - LOOP_VINFO_LOOP_NEST (loop_vinfo), true)) - return false; + bool res = compute_all_dependences (LOOP_VINFO_DATAREFS (loop_vinfo), + &LOOP_VINFO_DDRS (loop_vinfo), + LOOP_VINFO_LOOP_NEST (loop_vinfo), + true); + gcc_assert (res); } LOOP_VINFO_NO_DATA_DEPENDENCIES (loop_vinfo) = true; diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index ab76be0..8741e0b 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1812,6 +1812,11 @@ vect_get_datarefs_in_loop (loop_p loop, basic_block *bbs, } return false; } + /* If dependence analysis will give up due to the limit on the + number of datarefs stop here and fail fatally. */ + if (datarefs->length () + > (unsigned)PARAM_VALUE (PARAM_LOOP_MAX_DATAREFS_FOR_DATADEPS)) + return false; } return true; } |