diff options
author | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-11 18:02:15 +0000 |
---|---|---|
committer | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-11 18:02:15 +0000 |
commit | 3072d30e7983a3ca5ad030f1f98a5c39bcc2c07b (patch) | |
tree | fdb9e9f8a0700a2713dc690fed1a2cf20dae8392 /gcc/struct-equiv.c | |
parent | 8ceb1bfd33bc40bf0cbe1fab8903c2c31efd10ee (diff) | |
download | gcc-3072d30e7983a3ca5ad030f1f98a5c39bcc2c07b.tar.gz |
Merge dataflow branch into mainline
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125624 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/struct-equiv.c')
-rw-r--r-- | gcc/struct-equiv.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/gcc/struct-equiv.c b/gcc/struct-equiv.c index c37378e457d..3658e87b748 100644 --- a/gcc/struct-equiv.c +++ b/gcc/struct-equiv.c @@ -1,6 +1,7 @@ /* Control flow optimization code for GNU compiler. Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Free Software Foundation, Inc. This file is part of GCC. @@ -88,6 +89,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA #include "target.h" #include "emit-rtl.h" #include "reload.h" +#include "df.h" static void merge_memattrs (rtx, rtx); static bool set_dest_equiv_p (rtx x, rtx y, struct equiv_info *info); @@ -983,13 +985,8 @@ insns_match_p (rtx i1, rtx i2, struct equiv_info *info) bool struct_equiv_init (int mode, struct equiv_info *info) { - if ((info->x_block->flags | info->y_block->flags) & BB_DIRTY) - update_life_info_in_dirty_blocks (UPDATE_LIFE_GLOBAL_RM_NOTES, - (PROP_DEATH_NOTES - | ((mode & CLEANUP_POST_REGSTACK) - ? PROP_POST_REGSTACK : 0))); - if (!REG_SET_EQUAL_P (info->x_block->il.rtl->global_live_at_end, - info->y_block->il.rtl->global_live_at_end)) + if (!REG_SET_EQUAL_P (DF_LR_OUT (info->x_block), + DF_LR_OUT (info->y_block))) { #ifdef STACK_REGS unsigned rn; @@ -1002,11 +999,11 @@ struct_equiv_init (int mode, struct equiv_info *info) least makes the regsets comparable. */ for (rn = FIRST_STACK_REG; rn <= LAST_STACK_REG; rn++) { - CLEAR_REGNO_REG_SET (info->x_block->il.rtl->global_live_at_end, rn); - CLEAR_REGNO_REG_SET (info->y_block->il.rtl->global_live_at_end, rn); + CLEAR_REGNO_REG_SET (DF_LR_OUT (info->x_block), rn); + CLEAR_REGNO_REG_SET (DF_LR_OUT (info->y_block), rn); } - if (!REG_SET_EQUAL_P (info->x_block->il.rtl->global_live_at_end, - info->y_block->il.rtl->global_live_at_end)) + if (!REG_SET_EQUAL_P (DF_LR_OUT (info->x_block), + DF_LR_OUT (info->y_block))) #endif return false; } @@ -1028,7 +1025,7 @@ struct_equiv_init (int mode, struct equiv_info *info) info->common_live = ALLOC_REG_SET (®_obstack); info->x_local_live = ALLOC_REG_SET (®_obstack); info->y_local_live = ALLOC_REG_SET (®_obstack); - COPY_REG_SET (info->common_live, info->x_block->il.rtl->global_live_at_end); + COPY_REG_SET (info->common_live, DF_LR_OUT (info->x_block)); struct_equiv_make_checkpoint (&info->best_match, info); return true; } |