aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-10-10 16:34:17 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-10-10 16:34:17 -0700
commit715e7fbc831af02e80acc60be2fa19208ab62dfc (patch)
treeba7b0b84a68f9ed2f41f5b4352349cfa71aae6ad /gcc/flow.c
parent07b983cd7142b619b990d572a89a3370ae12f7a6 (diff)
downloadgcc-715e7fbc831af02e80acc60be2fa19208ab62dfc.zip
gcc-715e7fbc831af02e80acc60be2fa19208ab62dfc.tar.gz
gcc-715e7fbc831af02e80acc60be2fa19208ab62dfc.tar.bz2
combine.c (refresh_blocks, [...]): New.
* combine.c (refresh_blocks, need_refresh): New. (combine_instructions): Allocate refresh_blocks. Invoke update_life_info if needed. (distribute_notes): Mark refresh_blocks instead of installing USE insns. * flow.c (update_life_info): Remove notes if GLOBAL_RM_NOTES. * basic_block.h (enum update_life_extent): Add GLOBAL_RM_NOTES. * Makefile.in (recog.o): Depend on basic-block.h. From-SVN: r29893
Diffstat (limited to 'gcc/flow.c')
-rw-r--r--gcc/flow.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 9418b8b..3619e28 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -2554,9 +2554,9 @@ verify_local_live_at_start (new_live_at_start, bb)
lose the kill. So we _can_ have a pseudo go live. How irritating. */
void
-update_life_info (blocks, local_only)
+update_life_info (blocks, extent)
sbitmap blocks;
- enum update_life_extent local_only;
+ enum update_life_extent extent;
{
regset tmp;
int i;
@@ -2565,8 +2565,14 @@ update_life_info (blocks, local_only)
tmp = ALLOCA_REG_SET ();
/* For a global update, we go through the relaxation process again. */
- if (! local_only)
- calculate_global_regs_live (blocks, blocks, 0);
+ if (extent != UPDATE_LIFE_LOCAL)
+ {
+ calculate_global_regs_live (blocks, blocks, 0);
+
+ /* If asked, remove notes from the blocks we'll update. */
+ if (extent == UPDATE_LIFE_GLOBAL_RM_NOTES)
+ count_or_remove_death_notes (blocks, 1);
+ }
EXECUTE_IF_SET_IN_SBITMAP (blocks, 0, i,
{
@@ -2576,7 +2582,7 @@ update_life_info (blocks, local_only)
propagate_block (tmp, bb->head, bb->end, (regset) NULL, i,
PROP_DEATH_NOTES);
- if (local_only)
+ if (extent == UPDATE_LIFE_LOCAL)
verify_local_live_at_start (tmp, bb);
CLEAN_ALLOCA;