aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-06-26 06:42:46 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-06-26 06:42:46 +0000
commit9ae91886f6a59fbcba0559299e170ee82fa592cb (patch)
treebb66c56c1cb07553283713a12b2fc0d3ee52b7dc
parent7d0c13523ca0896a160881c9701b020172fb67fd (diff)
downloadgcc-9ae91886f6a59fbcba0559299e170ee82fa592cb.zip
gcc-9ae91886f6a59fbcba0559299e170ee82fa592cb.tar.gz
gcc-9ae91886f6a59fbcba0559299e170ee82fa592cb.tar.bz2
re PR tree-optimization/86287 (AddressSanitizer: heap-use-after-free on bootstrap with -O3)
2018-06-26 Richard Biener <rguenther@suse.de> PR tree-optimization/86287 PR bootstrap/86316 * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free. (vect_analyze_loop): Initialize n_stmts. From-SVN: r262132
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-vect-loop.c7
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 342c69b..ec68212 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2018-06-26 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/86287
+ PR bootstrap/86316
+ * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
+ (vect_analyze_loop): Initialize n_stmts.
+
+2018-06-26 Richard Biener <rguenther@suse.de>
+
PR middle-end/86271
* fold-const.c (fold_convertible_p): Pointer extension
isn't valid.
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index dacc881..615b6bb 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -2315,7 +2315,7 @@ vect_analyze_loop (struct loop *loop, loop_vec_info orig_loop_vinfo,
return NULL;
}
- unsigned n_stmts;
+ unsigned n_stmts = 0;
poly_uint64 autodetected_vector_size = 0;
while (1)
{
@@ -8342,8 +8342,9 @@ vect_transform_loop_stmt (loop_vec_info loop_vinfo, gimple *stmt,
/* SLP. Schedule all the SLP instances when the first SLP stmt is
reached. */
- if (STMT_SLP_TYPE (stmt_info))
+ if (slp_vect_type slptype = STMT_SLP_TYPE (stmt_info))
{
+
if (!*slp_scheduled)
{
*slp_scheduled = true;
@@ -8354,7 +8355,7 @@ vect_transform_loop_stmt (loop_vec_info loop_vinfo, gimple *stmt,
}
/* Hybrid SLP stmts must be vectorized in addition to SLP. */
- if (PURE_SLP_STMT (stmt_info))
+ if (slptype == pure_slp)
return;
}