aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-10-20 13:15:45 +0200
committerRichard Biener <rguenther@suse.de>2020-10-20 14:21:01 +0200
commit06729598b0dc10dbe60545f21c2214ad66a5a3db (patch)
tree71ae624c85726b68eb0612d859402931906cc7b1 /gcc
parent1bfc07d150790fae93184a79a7cce897655cb37b (diff)
downloadgcc-06729598b0dc10dbe60545f21c2214ad66a5a3db.zip
gcc-06729598b0dc10dbe60545f21c2214ad66a5a3db.tar.gz
gcc-06729598b0dc10dbe60545f21c2214ad66a5a3db.tar.bz2
Fix latch PHI arg lookup in vectorizable_reduction for double-reduction
We were using the wrong loop to figure the latch arg of a double-reduction PHI. Which isn't a problem in case ->dest_idx match up with the outer loop edges - but that's of course not guaranteed. 2020-10-20 Richard Biener <rguenther@suse.de> * tree-vect-loop.c (vectorizable_reduction): Use the correct loops latch edge for the PHI arg lookup.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-loop.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 991fd45..6c29e00 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -6359,8 +6359,10 @@ vectorizable_reduction (loop_vec_info loop_vinfo,
/* Verify following REDUC_IDX from the latch def leads us back to the PHI
and compute the reduction chain length. Discover the real
reduction operation stmt on the way (stmt_info and slp_for_stmt_info). */
- tree reduc_def = PHI_ARG_DEF_FROM_EDGE (reduc_def_phi,
- loop_latch_edge (loop));
+ tree reduc_def
+ = PHI_ARG_DEF_FROM_EDGE (reduc_def_phi,
+ loop_latch_edge
+ (gimple_bb (reduc_def_phi)->loop_father));
unsigned reduc_chain_length = 0;
bool only_slp_reduc_chain = true;
stmt_info = NULL;