From 428248f7944d289104751f05dc49d0e0c359f161 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 24 Nov 1999 01:24:59 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 3 +++ gcc/loop.c | 14 ++++++++------ gcc/testsuite/g++.old-deja/g++.other/debug6.C | 2 -- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03f507f9ad7..55f7c7a653d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 1999-11-23 Mark Mitchell + * 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 8aeda6e98e5..a1a3803086a 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 8fd5f9f0ecf..43f13b936b3 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 () {} -- 2.30.2