From 21719cea1138d7e095c0ba68402175550e62f5e1 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Tue, 8 Sep 2009 17:39:42 +0000 Subject: [PATCH] re PR debug/41232 (VTA: SSA name in freelist but still referenced) gcc/ChangeLog: PR debug/41232 * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts in the middle block. gcc/testsuite/ChangeLog: PR debug/41232 * gcc.dg/pr41232.c: New. From-SVN: r151519 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr41232.c | 14 ++++++++++++++ gcc/tree-ssa-phiopt.c | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/pr41232.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ee2b11e715..2c3ea39755e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-09-08 Alexandre Oliva + + PR debug/41232 + * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts + in the middle block. + 2009-09-08 Kai Tietz * tree-ssa-reassoc.c (find_operand_rank): Cast pointer diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 15fd58eb4cf..66b454d6e8d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-09-08 Alexandre Oliva + + PR debug/41232 + * gcc.dg/pr41232.c: New. + 2009-09-08 Joseph Myers * gcc.misc-tests/i386-prefetch.exp: Skip tests when multilib flags diff --git a/gcc/testsuite/gcc.dg/pr41232.c b/gcc/testsuite/gcc.dg/pr41232.c new file mode 100644 index 00000000000..17ec54899d7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr41232.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -g" } */ +extern int atoi (const char *); +extern int sprintf (char *, const char *, ...); +void malloc_init() { + char *cptr; + char buf[1]; + int tmbd = atoi(cptr); + if (tmbd > 0) + tmbd = (tmbd <= 124) ? tmbd : 124; + else + tmbd = 0; + sprintf(buf, "%d\n", tmbd); +} diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index b809ab30f8d..3accbbc2bb1 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -857,7 +857,7 @@ minmax_replacement (basic_block cond_bb, basic_block middle_bb, /* Move the statement from the middle block. */ gsi = gsi_last_bb (cond_bb); - gsi_from = gsi_last_bb (middle_bb); + gsi_from = gsi_last_nondebug_bb (middle_bb); gsi_move_before (&gsi_from, &gsi); }