diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2009-09-08 17:39:42 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2009-09-08 17:39:42 +0000 |
commit | 21719cea1138d7e095c0ba68402175550e62f5e1 (patch) | |
tree | da84c374fe689105c440607cd4ff89344d5688a8 /gcc | |
parent | a3d37119695a4b77a17a54f6a7f5faae2e36e461 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr41232.c | 14 | ||||
-rw-r--r-- | gcc/tree-ssa-phiopt.c | 2 |
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); } |