diff options
author | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-22 12:28:52 +0000 |
---|---|---|
committer | bonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-12-22 12:28:52 +0000 |
commit | 225c0ccb2dd1ab2a64279bed0c46d2d939f634fb (patch) | |
tree | 36e2ee57526b4b3c6b8d4c517b51f0f8e348cb54 /gcc/fwprop.c | |
parent | ae48753c6e36bd1fa331837af5fbd4cd1b094b77 (diff) | |
download | gcc-225c0ccb2dd1ab2a64279bed0c46d2d939f634fb.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120147 138bc75d-0d04-0410-961f-82ee72b054a4
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 887da7009e4..46e1a553ad5 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); |