aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-11-24 01:24:59 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-11-24 01:24:59 +0000
commit428248f7944d289104751f05dc49d0e0c359f161 (patch)
treee6df572b38809b1b0fe04e7c064457c61bf14891
parent582db8e43021e33373aafbb03eafe6985fc4a0e8 (diff)
downloadgcc-428248f7944d289104751f05dc49d0e0c359f161.zip
gcc-428248f7944d289104751f05dc49d0e0c359f161.tar.gz
gcc-428248f7944d289104751f05dc49d0e0c359f161.tar.bz2
loop.c (loop_optimize): Always find_loop_tree_blocks and unroll_block_trees when generating debuggable code.
* loop.c (loop_optimize): Always find_loop_tree_blocks and unroll_block_trees when generating debuggable code. From-SVN: r30647
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/loop.c14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/debug6.C2
3 files changed, 11 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 03f507f..55f7c7a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
1999-11-23 Mark Mitchell <mark@codesourcery.com>
+ * loop.c (loop_optimize): Always find_loop_tree_blocks and
+ unroll_block_trees when generating debuggable code.
+
* tree.h (unsave_expr_1): New function.
(lang_unsave): New variable.
(get_callee_fndecl): New function.
diff --git a/gcc/loop.c b/gcc/loop.c
index 8aeda6e..a1a3803 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -550,8 +550,12 @@ loop_optimize (f, dumpfile, unroll_p, bct_p)
if (uid_luid[i] == 0)
uid_luid[i] = uid_luid[i - 1];
- /* Create a mapping from loops to BLOCK tree nodes. */
- if (unroll_p && write_symbols != NO_DEBUG)
+ /* If debugging and unrolling loops, we must replicate the tree
+ nodes corresponding to the BLOCKs inside the loop, so that the
+ original one to one mapping will remain. We sometimes unroll
+ loops even when unroll_p is false, so we must always do this when
+ debugging. */
+ if (write_symbols != NO_DEBUG)
find_loop_tree_blocks ();
/* Determine if the function has indirect jump. On some systems
@@ -565,10 +569,8 @@ loop_optimize (f, dumpfile, unroll_p, bct_p)
scan_loop (loop_number_loop_starts[i], loop_number_loop_ends[i],
loop_number_loop_cont[i], unroll_p, bct_p);
- /* If debugging and unrolling loops, we must replicate the tree nodes
- corresponding to the blocks inside the loop, so that the original one
- to one mapping will remain. */
- if (unroll_p && write_symbols != NO_DEBUG)
+ /* Replicate the BLOCKs. */
+ if (write_symbols != NO_DEBUG)
unroll_block_trees ();
end_alias_analysis ();
diff --git a/gcc/testsuite/g++.old-deja/g++.other/debug6.C b/gcc/testsuite/g++.old-deja/g++.other/debug6.C
index 8fd5f9f..43f13b9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/debug6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/debug6.C
@@ -6,8 +6,6 @@
// This causes assember relocation errors
-// excess errors test - XFAIL *-*-*
-
struct X
{
virtual ~X () {}