This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: PR 21503: [3.4 regression]: Ada failed to bootstrap
- From: "H. J. Lu" <hjl at lucon dot org>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 10 May 2005 15:22:11 -0700
- Subject: Re: PATCH: PR 21503: [3.4 regression]: Ada failed to bootstrap
- References: <20050510212954.GA1054@lucon.org>
The C and Ada test results are at
http://gcc.gnu.org/ml/gcc-testresults/2005-05/msg00651.html
H.J.
----
On Tue, May 10, 2005 at 02:29:54PM -0700, H. J. Lu wrote:
> http://gcc.gnu.org/ml/gcc-patches/2005-05/msg00689.html
>
> only contains the partial change Kenner made on 2004-02-12. Here is
> the rest. Gcc 3.4 bootstrap has passed the Ada failure on Linux/ia32.
>
>
> H.J.
> ---
> 2005-05-10 H.J. Lu <hongjiu.lu@intel.com>
>
> Backport from mainline
> 2004-02-12 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
> * function.c (fixup_var_refs): Save volatile_ok and set to 1.
> * expr.c (emit_block_move_via_movstr): Save and restore volatile_ok.
>
> --- gcc/expr.c.21503 2005-05-10 12:49:44.413672877 -0700
> +++ gcc/expr.c 2005-05-10 14:18:25.693533630 -0700
> @@ -1452,6 +1452,7 @@ static bool
> emit_block_move_via_movstr (rtx x, rtx y, rtx size, unsigned int align)
> {
> rtx opalign = GEN_INT (align / BITS_PER_UNIT);
> + int save_volatile_ok = volatile_ok;
> enum machine_mode mode;
>
> /* Since this is a move insn, we don't care about volatility. */
> @@ -1501,7 +1502,7 @@ emit_block_move_via_movstr (rtx x, rtx y
> if (pat)
> {
> emit_insn (pat);
> - volatile_ok = 0;
> + volatile_ok = save_volatile_ok;
> return true;
> }
> else
> @@ -1509,7 +1510,7 @@ emit_block_move_via_movstr (rtx x, rtx y
> }
> }
>
> - volatile_ok = 0;
> + volatile_ok = save_volatile_ok;
> return false;
> }
>
> --- gcc/function.c.21503 2005-05-10 12:49:44.968624328 -0700
> +++ gcc/function.c 2005-05-10 14:18:25.700533018 -0700
> @@ -1517,6 +1517,7 @@ fixup_var_refs (rtx var, enum machine_mo
> rtx first_insn = get_insns ();
> struct sequence_stack *stack = seq_stack;
> tree rtl_exps = rtl_expr_chain;
> + int save_volatile_ok = volatile_ok;
>
> /* If there's a hash table, it must record all uses of VAR. */
> if (ht)
> @@ -1528,6 +1529,9 @@ fixup_var_refs (rtx var, enum machine_mo
> return;
> }
>
> + /* Volatile is valid in MEMs because all we're doing in changing the
> + address inside. */
> + volatile_ok = 1;
> fixup_var_refs_insns (first_insn, var, promoted_mode, unsignedp,
> stack == 0, may_share);
>
> @@ -1555,6 +1559,8 @@ fixup_var_refs (rtx var, enum machine_mo
> end_sequence ();
> }
> }
> +
> + volatile_ok = save_volatile_ok;
> }
>
> /* REPLACEMENTS is a pointer to a list of the struct fixup_replacement and X is