From 46e950dbb155a0bc0abb279920d3fd3914032bde Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 26 Sep 2013 12:45:19 +0000 Subject: [PATCH] re PR tree-optimization/58539 (ICE with segfault at -O3 with -g enabled on x86_64-linux-gnu) 2013-09-26 Richard Biener PR tree-optimization/58539 * tree-vect-loop.c (vect_create_epilog_for_reduction): Honor the fact that debug statements are not taking part in loop-closed SSA construction. * gcc.dg/torture/pr58539.c: New testcase. From-SVN: r202942 --- gcc/ChangeLog | 7 +++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/torture/pr58539.c | 20 ++++++++++++++++++++ gcc/tree-vect-loop.c | 11 ++++++++--- 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr58539.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b9d4c358bef..90feb2c5739 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-09-26 Richard Biener + + PR tree-optimization/58539 + * tree-vect-loop.c (vect_create_epilog_for_reduction): Honor + the fact that debug statements are not taking part in loop-closed + SSA construction. + 2013-09-26 Nick Clifton * config/msp430/msp430.c (msp430_expand_epilogue): Fix compile diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a72615cb5d5..065eebd5556 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-09-26 Richard Biener + + PR tree-optimization/58539 + * gcc.dg/torture/pr58539.c: New testcase. + 2013-09-25 Jeff Law * gcc.dg/tree-ssa/ssa-dom-thread-3.c: Update expected output. diff --git a/gcc/testsuite/gcc.dg/torture/pr58539.c b/gcc/testsuite/gcc.dg/torture/pr58539.c new file mode 100644 index 00000000000..a016150f18e --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr58539.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-g" } */ + +int a, b; + +extern void baz (int); + +int foo (int p) +{ + return p ? p : 1; +} + +void bar () +{ + int *c = &a, *d = &a; + for (b = 0; b < 12; b++) + *d |= 1; + foo (*c); + baz (*c && 1); +} diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 2871ba1ce75..072d44ef2b2 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -4411,7 +4411,8 @@ vect_finalize_reduction: result. (The reduction result is expected to have two immediate uses - one at the latch block, and one at the loop exit). */ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) - if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) + if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p))) + && !is_gimple_debug (USE_STMT (use_p))) phis.safe_push (USE_STMT (use_p)); /* While we expect to have found an exit_phi because of loop-closed-ssa @@ -4541,7 +4542,10 @@ vect_finalize_reduction: FOR_EACH_IMM_USE_FAST (use_p, imm_iter, scalar_dest) { if (!flow_bb_inside_loop_p (loop, gimple_bb (USE_STMT (use_p)))) - phis.safe_push (USE_STMT (use_p)); + { + if (!is_gimple_debug (USE_STMT (use_p))) + phis.safe_push (USE_STMT (use_p)); + } else { if (double_reduc && gimple_code (USE_STMT (use_p)) == GIMPLE_PHI) @@ -4551,7 +4555,8 @@ vect_finalize_reduction: FOR_EACH_IMM_USE_FAST (phi_use_p, phi_imm_iter, phi_res) { if (!flow_bb_inside_loop_p (loop, - gimple_bb (USE_STMT (phi_use_p)))) + gimple_bb (USE_STMT (phi_use_p))) + && !is_gimple_debug (USE_STMT (phi_use_p))) phis.safe_push (USE_STMT (phi_use_p)); } } -- 2.30.2