Commit 8072f69c by Jeffrey A Law Committed by Jeff Law

alias.c (init_alias_analysis): Handle -fno-alias-check when optimizing correctly.

        * alias.c (init_alias_analysis): Handle -fno-alias-check when
        optimizing correctly.

From-SVN: r16268
parent 6cad9e32
...@@ -9,6 +9,9 @@ Sat Nov 1 21:43:00 1997 Mike Stump (mrs@wrs.com) ...@@ -9,6 +9,9 @@ Sat Nov 1 21:43:00 1997 Mike Stump (mrs@wrs.com)
Sat Nov 1 19:15:28 1997 Jeffrey A Law (law@cygnus.com) Sat Nov 1 19:15:28 1997 Jeffrey A Law (law@cygnus.com)
* alias.c (init_alias_analysis): Handle -fno-alias-check when
optimizing correctly.
* expr.c (expand_builtin_setjmp): Don't emit a SETJMP note * expr.c (expand_builtin_setjmp): Don't emit a SETJMP note
or set current_function_calls_setjmp anymore. or set current_function_calls_setjmp anymore.
......
...@@ -1002,12 +1002,6 @@ init_alias_analysis () ...@@ -1002,12 +1002,6 @@ init_alias_analysis ()
/* Assume nothing will change this iteration of the loop. */ /* Assume nothing will change this iteration of the loop. */
changed = 0; changed = 0;
/* Wipe the potential alias information clean for this pass. */
bzero ((char *) new_reg_base_value, reg_base_value_size * sizeof (rtx));
/* Wipe the reg_seen array clean. */
bzero ((char *) reg_seen, reg_base_value_size);
/* We want to assign the same IDs each iteration of this loop, so /* We want to assign the same IDs each iteration of this loop, so
start counting from zero each iteration of the loop. */ start counting from zero each iteration of the loop. */
unique_id = 0; unique_id = 0;
...@@ -1016,6 +1010,17 @@ init_alias_analysis () ...@@ -1016,6 +1010,17 @@ init_alias_analysis ()
loop, so we're copying arguments. */ loop, so we're copying arguments. */
copying_arguments = 1; copying_arguments = 1;
/* Only perform initialization of the arrays if we're actually
performing alias analysis. */
if (flag_alias_check)
{
/* Wipe the potential alias information clean for this pass. */
bzero ((char *) new_reg_base_value,
reg_base_value_size * sizeof (rtx));
/* Wipe the reg_seen array clean. */
bzero ((char *) reg_seen, reg_base_value_size);
/* Mark all hard registers which may contain an address. /* Mark all hard registers which may contain an address.
The stack, frame and argument pointers may contain an address. The stack, frame and argument pointers may contain an address.
An argument register which can hold a Pmode value may contain An argument register which can hold a Pmode value may contain
...@@ -1030,7 +1035,8 @@ init_alias_analysis () ...@@ -1030,7 +1035,8 @@ init_alias_analysis ()
/* Check whether this register can hold an incoming pointer /* Check whether this register can hold an incoming pointer
argument. FUNCTION_ARG_REGNO_P tests outgoing register argument. FUNCTION_ARG_REGNO_P tests outgoing register
numbers, so translate if necessary due to register windows. */ numbers, so translate if necessary due to register windows. */
if (FUNCTION_ARG_REGNO_P (OUTGOING_REGNO (i)) && HARD_REGNO_MODE_OK (i, Pmode)) if (FUNCTION_ARG_REGNO_P (OUTGOING_REGNO (i))
&& HARD_REGNO_MODE_OK (i, Pmode))
new_reg_base_value[i] = gen_rtx (ADDRESS, VOIDmode, new_reg_base_value[i] = gen_rtx (ADDRESS, VOIDmode,
gen_rtx (REG, Pmode, i)); gen_rtx (REG, Pmode, i));
...@@ -1053,6 +1059,7 @@ init_alias_analysis () ...@@ -1053,6 +1059,7 @@ init_alias_analysis ()
&& GET_CODE (static_chain_rtx) == REG) && GET_CODE (static_chain_rtx) == REG)
new_reg_base_value[REGNO (static_chain_rtx)] new_reg_base_value[REGNO (static_chain_rtx)]
= gen_rtx (ADDRESS, Pmode, static_chain_rtx); = gen_rtx (ADDRESS, Pmode, static_chain_rtx);
}
/* Walk the insns adding values to the new_reg_base_value array. */ /* Walk the insns adding values to the new_reg_base_value array. */
for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
...@@ -1089,6 +1096,7 @@ init_alias_analysis () ...@@ -1089,6 +1096,7 @@ init_alias_analysis ()
} }
/* Now propagate values from new_reg_base_value to reg_base_value. */ /* Now propagate values from new_reg_base_value to reg_base_value. */
if (flag_alias_check)
for (i = 0; i < reg_base_value_size; i++) for (i = 0; i < reg_base_value_size; i++)
{ {
if (new_reg_base_value[i] if (new_reg_base_value[i]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment