summaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-26 00:51:17 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-26 00:51:17 +0000
commite5be0cc6bb25467fda221aa46461288ea5999e1c (patch)
tree5273c65ecf336e7685b5c2a99498d88d7013166b /gcc/alias.c
parentf0e28826eb00143a6e988f5d78723605dcc4e2d0 (diff)
downloadgcc-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.c19
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. */