diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2006-12-22 12:28:52 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2006-12-22 12:28:52 +0000 |
commit | 46fd10da92b527f323f89cc5e44966538b564553 (patch) | |
tree | 36e2ee57526b4b3c6b8d4c517b51f0f8e348cb54 /gcc/fwprop.c | |
parent | af71363e455f4c60cf98f5ef42b4ddd8daedabd3 (diff) | |
download | gcc-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.c | 6 |
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); |