re PR rtl-optimization/37219 (fwprop1 is broken for addresses)
authorAndrew Pinski <pinskia@gcc.gnu.org>
Tue, 26 Aug 2008 19:02:05 +0000 (12:02 -0700)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Tue, 26 Aug 2008 19:02:05 +0000 (12:02 -0700)
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

gcc/ChangeLog
gcc/fwprop.c

index eec1975..b206458 100644 (file)
@@ -1,4 +1,10 @@
-2008-08-28  Paul Brook  <paul@codesourcery.com>
+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.
+
+2008-08-26  Paul Brook  <paul@codesourcery.com>
 
        * config/arm/vfp.md: Document fmul{s,d} and fmac{s,d} types.
        Remove documentation entry for fmul type.
index fbe4329..7c61ca0 100644 (file)
@@ -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);
     }