From 89939ff85a7c2ed0c1eb33e51d241f2a6dda0695 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 9 Nov 2018 12:29:51 +0000 Subject: [PATCH] re PR c/87953 (asan: stack-buffer-overflow in vectorizable_reduction) 2018-11-09 Richard Biener PR tree-optimization/87953 * tree-vect-loop.c (vectorizable_reduction): For analysis always pass ops[0] to vectorizable_condition. From-SVN: r265964 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vect-loop.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 07993c538c09..693ac972e5ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-11-09 Richard Biener + + PR tree-optimization/87953 + * tree-vect-loop.c (vectorizable_reduction): For analysis + always pass ops[0] to vectorizable_condition. + 2018-11-09 Stafford Horne Richard Henderson Joel Sherrill diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 7338ca5efa87..0dc84f1f9e56 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -6485,9 +6485,10 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, if (code == COND_EXPR) { /* Only call during the analysis stage, otherwise we'll lose - STMT_VINFO_TYPE. */ + STMT_VINFO_TYPE. We'll pass ops[0] as reduc_op, it's only + used as a flag during analysis. */ if (!vec_stmt && !vectorizable_condition (stmt_info, gsi, NULL, - ops[reduc_index], 0, NULL, + ops[0], 0, NULL, cost_vec)) { if (dump_enabled_p ()) -- 2.47.2