OSDN Git Service

2006-12-22 Paolo Bonzini <bonzini@gnu.org>
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Dec 2006 12:28:52 +0000 (12:28 +0000)
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Dec 2006 12:28:52 +0000 (12:28 +0000)
PR rtl-optimization/29840

* fwprop.c (forward_propagate_into): Reject artificial uses/defs.
(fwprop_init): Add DF_HARD_REGS to df_init call.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120147 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/fwprop.c

index b2efe99..dadfa10 100644 (file)
@@ -1,3 +1,10 @@
+2006-12-22  Paolo Bonzini  <bonzini@gnu.org>
+
+       PR rtl-optimization/29840
+
+       * fwprop.c (forward_propagate_into): Reject artificial uses/defs.
+       (fwprop_init): Add DF_HARD_REGS to df_init call.
+
 2006-12-21  Andrew Pinski  <pinskia@gmail.com>
 
        * tree-nested.c (create_tmp_var_for): Check for vector type
index 887da70..46e1a55 100644 (file)
@@ -846,6 +846,8 @@ forward_propagate_into (struct df_ref *use)
 
   if (DF_REF_FLAGS (use) & DF_REF_READ_WRITE)
     return;
+  if (DF_REF_FLAGS (use) & DF_REF_ARTIFICIAL)
+    return;
 
   /* Only consider uses that have a single definition.  */
   defs = DF_REF_CHAIN (use);
@@ -855,6 +857,8 @@ forward_propagate_into (struct df_ref *use)
   def = defs->ref;
   if (DF_REF_FLAGS (def) & DF_REF_READ_WRITE)
     return;
+  if (DF_REF_FLAGS (def) & DF_REF_ARTIFICIAL)
+    return;
 
   /* Do not propagate loop invariant definitions inside the loop if
      we are going to unroll.  */
@@ -899,7 +903,7 @@ fwprop_init (void)
 
   /* Now set up the dataflow problem (we only want use-def chains) and
      put the dataflow solver to work.  */
-  df = df_init (DF_SUBREGS | DF_EQUIV_NOTES);
+  df = df_init (DF_HARD_REGS | DF_SUBREGS | DF_EQUIV_NOTES);
   df_chain_add_problem (df, DF_UD_CHAIN);
   df_analyze (df);
   df_dump (df, dump_file);