aboutsummaryrefslogtreecommitdiff
path: root/gcc/fwprop.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2006-12-22 12:28:52 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2006-12-22 12:28:52 +0000
commit46fd10da92b527f323f89cc5e44966538b564553 (patch)
tree36e2ee57526b4b3c6b8d4c517b51f0f8e348cb54 /gcc/fwprop.c
parentaf71363e455f4c60cf98f5ef42b4ddd8daedabd3 (diff)
downloadgcc-46fd10da92b527f323f89cc5e44966538b564553.zip
gcc-46fd10da92b527f323f89cc5e44966538b564553.tar.gz
gcc-46fd10da92b527f323f89cc5e44966538b564553.tar.bz2
re PR rtl-optimization/29840 (build/genconditions ../../gcc/gcc/config/pa/pa.md > tmp-condmd.c: /bin/sh: 13354 Memory fault(coredump))
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. From-SVN: r120147
Diffstat (limited to 'gcc/fwprop.c')
-rw-r--r--gcc/fwprop.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index 887da70..46e1a55 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -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);