aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2009-09-08 17:39:42 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2009-09-08 17:39:42 +0000
commit21719cea1138d7e095c0ba68402175550e62f5e1 (patch)
treeda84c374fe689105c440607cd4ff89344d5688a8 /gcc
parenta3d37119695a4b77a17a54f6a7f5faae2e36e461 (diff)
downloadgcc-21719cea1138d7e095c0ba68402175550e62f5e1.zip
gcc-21719cea1138d7e095c0ba68402175550e62f5e1.tar.gz
gcc-21719cea1138d7e095c0ba68402175550e62f5e1.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr41232.c14
-rw-r--r--gcc/tree-ssa-phiopt.c2
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7ee2b11..2c3ea39 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41232
+ * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
+ in the middle block.
+
2009-09-08 Kai Tietz <kai.tietz@onevision.com>
* tree-ssa-reassoc.c (find_operand_rank): Cast pointer
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 15fd58e..66b454d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-09-08 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/41232
+ * gcc.dg/pr41232.c: New.
+
2009-09-08 Joseph Myers <joseph@codesourcery.com>
* 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 0000000..17ec548
--- /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 b809ab3..3accbbc 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);
}