diff options
author | Richard Henderson <rth@redhat.com> | 2009-12-07 14:42:10 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2009-12-07 14:42:10 -0800 |
commit | 74e12783a3dbd31f56a44678ad9af5a14f0bbf1a (patch) | |
tree | ef92971896306579f7a3026e1bfb42c3c9d31d32 /gcc | |
parent | aec4e50c21eced5ee903b7350b71170fa58262e4 (diff) | |
download | gcc-74e12783a3dbd31f56a44678ad9af5a14f0bbf1a.zip gcc-74e12783a3dbd31f56a44678ad9af5a14f0bbf1a.tar.gz gcc-74e12783a3dbd31f56a44678ad9af5a14f0bbf1a.tar.bz2 |
re PR debug/42299 (another verify_ssa failure with -g -O2)
PR debug/42299
PR debug/42166
* tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation
for ssa names already registered for update.
From-SVN: r155063
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr42299.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr42166.f90 | 20 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 10 |
4 files changed, 57 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4056a35..a10b288 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-12-07 Richard Henderson <rth@redhat.com> + + PR debug/42299 + PR debug/42166 + * tree-ssa.c (insert_debug_temp_for_var_def): Skip propagation + for ssa names already registered for update. + 2009-12-07 Jakub Jelinek <jakub@redhat.com> PR debug/42244 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42299.c b/gcc/testsuite/gcc.c-torture/compile/pr42299.c new file mode 100644 index 0000000..5a9199f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr42299.c @@ -0,0 +1,23 @@ +/* { dg-options "-g" } */ + +static int +foo (int x, int y) +{ + if (y) + goto lab; + if (x) + y = 0; + if (y) + goto lab; + y = 0; +lab: + return y; +} + +void +baz (int x, int y) +{ + y = foo (x, y); + if (y != 0) + bar (); +} diff --git a/gcc/testsuite/gfortran.dg/pr42166.f90 b/gcc/testsuite/gfortran.dg/pr42166.f90 new file mode 100644 index 0000000..5b97815 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr42166.f90 @@ -0,0 +1,20 @@ +! { dg-options "-O2 -g" } + +MODULE powell + INTEGER, PARAMETER :: dp=8 +CONTAINS + SUBROUTINE newuob (n, bmat, ndim, d, vlag, w, npt) + REAL(dp), DIMENSION(ndim, *), INTENT(inout) :: bmat + REAL(dp), DIMENSION(*), INTENT(inout) :: d, vlag, w + REAL(dp) :: sum + INTEGER, INTENT(in) :: npt + DO j=1,n + jp=npt+j + DO k=1,n + sum=sum+bmat(jp,k)*d(k) + END DO + vlag(jp)=sum + END DO + END SUBROUTINE newuob +END MODULE powell + diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index b5d60b3..9947e57 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -312,9 +312,13 @@ insert_debug_temp_for_var_def (gimple_stmt_iterator *gsi, tree var) if (!MAY_HAVE_DEBUG_STMTS) return; - /* First of all, check whether there are debug stmts that reference - this variable and, if there are, decide whether we should use a - debug temp. */ + /* If this name has already been registered for replacement, do nothing + as anything that uses this name isn't in SSA form. */ + if (name_registered_for_update_p (var)) + return; + + /* Check whether there are debug stmts that reference this variable and, + if there are, decide whether we should use a debug temp. */ FOR_EACH_IMM_USE_FAST (use_p, imm_iter, var) { stmt = USE_STMT (use_p); |