aboutsummaryrefslogtreecommitdiff
path: root/gcc/fwprop.c
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@gcc.gnu.org>2008-08-26 12:02:05 -0700
committerAndrew Pinski <pinskia@gcc.gnu.org>2008-08-26 12:02:05 -0700
commit24713e85ff118e760314625f58f4329df71031d6 (patch)
treec76589964fab5b9ad0bc9fa8798ce1ea9e4d6522 /gcc/fwprop.c
parenta8e17e9ea71adffbceaecb8e217042a8f998bd93 (diff)
downloadgcc-24713e85ff118e760314625f58f4329df71031d6.zip
gcc-24713e85ff118e760314625f58f4329df71031d6.tar.gz
gcc-24713e85ff118e760314625f58f4329df71031d6.tar.bz2
re PR rtl-optimization/37219 (fwprop1 is broken for addresses)
2008-08-26 Andrew Pinski <andrew_pinski@playstation.sony.com> PR rtl-opt/37219 * fwprop.c (fwprop): Check that the loop_father is the outer loop. (fwprop_addr): Check that the loop_father is not the outer loop. From-SVN: r139605
Diffstat (limited to 'gcc/fwprop.c')
-rw-r--r--gcc/fwprop.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index fbe4329..7c61ca0 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -1056,7 +1056,9 @@ fwprop (void)
struct df_ref *use = DF_USES_GET (i);
if (use)
if (DF_REF_TYPE (use) == DF_REF_REG_USE
- || DF_REF_BB (use)->loop_father == NULL)
+ || DF_REF_BB (use)->loop_father == NULL
+ /* The outer most loop is not really a loop. */
+ || loop_outer (DF_REF_BB (use)->loop_father) == NULL)
forward_propagate_into (use);
}
@@ -1099,7 +1101,9 @@ fwprop_addr (void)
struct df_ref *use = DF_USES_GET (i);
if (use)
if (DF_REF_TYPE (use) != DF_REF_REG_USE
- && DF_REF_BB (use)->loop_father != NULL)
+ && DF_REF_BB (use)->loop_father != NULL
+ /* The outer most loop is not really a loop. */
+ && loop_outer (DF_REF_BB (use)->loop_father) != NULL)
forward_propagate_into (use);
}