diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-26 00:51:17 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-11-26 00:51:17 +0000 |
commit | e5be0cc6bb25467fda221aa46461288ea5999e1c (patch) | |
tree | 5273c65ecf336e7685b5c2a99498d88d7013166b /gcc/alias.c | |
parent | f0e28826eb00143a6e988f5d78723605dcc4e2d0 (diff) | |
download | gcc-e5be0cc6bb25467fda221aa46461288ea5999e1c.tar.gz |
* alias.c (find_base_value): Use new_reg_base_value if it's live.
(copying_arguments): Make boolean.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@59483 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index ca560b69e8c..45e868ca963 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -199,7 +199,7 @@ char *reg_known_equiv_p; /* True when scanning insns from the start of the rtl to the NOTE_INSN_FUNCTION_BEG note. */ -static int copying_arguments; +static bool copying_arguments; /* The splay-tree used to store the various alias set entries. */ static splay_tree alias_sets; @@ -781,9 +781,16 @@ find_base_value (src) The test above is not sufficient because the scheduler may move a copy out of an arg reg past the NOTE_INSN_FUNCTION_BEGIN. */ if ((regno >= FIRST_PSEUDO_REGISTER || fixed_regs[regno]) - && regno < reg_base_value_size - && reg_base_value[regno]) - return reg_base_value[regno]; + && regno < reg_base_value_size) + { + /* If we're inside init_alias_analysis, use new_reg_base_value + to reduce the number of relaxation iterations. */ + if (new_reg_base_value && new_reg_base_value[regno]) + return new_reg_base_value[regno]; + + if (reg_base_value[regno]) + return reg_base_value[regno]; + } return src; @@ -2744,7 +2751,7 @@ init_alias_analysis () /* We're at the start of the function each iteration through the loop, so we're copying arguments. */ - copying_arguments = 1; + copying_arguments = true; /* Wipe the potential alias information clean for this pass. */ memset ((char *) new_reg_base_value, 0, reg_base_value_size * sizeof (rtx)); @@ -2834,7 +2841,7 @@ init_alias_analysis () } else if (GET_CODE (insn) == NOTE && NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG) - copying_arguments = 0; + copying_arguments = false; } /* Now propagate values from new_reg_base_value to reg_base_value. */ |