From 46fd10da92b527f323f89cc5e44966538b564553 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 22 Dec 2006 12:28:52 +0000 Subject: [PATCH] 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 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 --- gcc/ChangeLog | 7 +++++++ gcc/fwprop.c | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b2efe998db5..dadfa10f623 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2006-12-22 Paolo Bonzini + + 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 * tree-nested.c (create_tmp_var_for): Check for vector type 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);