Commit 1eefb6c1 by Richard Henderson Committed by Richard Henderson

toplev.c (rest_of_compilation): Delay emit_initial_value_sets until after eh…

toplev.c (rest_of_compilation): Delay emit_initial_value_sets until after eh landing pad generation.

        * toplev.c (rest_of_compilation): Delay emit_initial_value_sets
        until after eh landing pad generation.
        * config/alpha/alpha.c (alpha_gp_save_rtx): Use gen_mem_addressof.
        * config/alpha/alpha.md (exception_receiver_2): Only accept MEMs.

From-SVN: r51411
parent dcce8b1d
2002-03-26 Richard Henderson <rth@redhat.com> 2002-03-26 Richard Henderson <rth@redhat.com>
* toplev.c (rest_of_compilation): Delay emit_initial_value_sets
until after eh landing pad generation.
* config/alpha/alpha.c (alpha_gp_save_rtx): Use gen_mem_addressof.
* config/alpha/alpha.md (exception_receiver_2): Only accept MEMs.
2002-03-26 Richard Henderson <rth@redhat.com>
* expr.h (ADD_PARM_SIZE): One more convert for INC. * expr.h (ADD_PARM_SIZE): One more convert for INC.
2002-03-26 Phil Edwards <pme@gcc.gnu.org> 2002-03-26 Phil Edwards <pme@gcc.gnu.org>
......
...@@ -5011,7 +5011,10 @@ alpha_return_addr (count, frame) ...@@ -5011,7 +5011,10 @@ alpha_return_addr (count, frame)
rtx rtx
alpha_gp_save_rtx () alpha_gp_save_rtx ()
{ {
return get_hard_reg_initial_val (DImode, 29); rtx r = get_hard_reg_initial_val (DImode, 29);
if (GET_CODE (r) != MEM)
r = gen_mem_addressof (r, NULL_TREE);
return r;
} }
static int static int
......
...@@ -6706,13 +6706,10 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi" ...@@ -6706,13 +6706,10 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
(set_attr "type" "multi")]) (set_attr "type" "multi")])
(define_insn "*exception_receiver_2" (define_insn "*exception_receiver_2"
[(unspec_volatile [(match_operand:DI 0 "nonimmediate_operand" "r,m")] [(unspec_volatile [(match_operand:DI 0 "memory_operand" "m")] UNSPECV_EHR)]
UNSPECV_EHR)]
"TARGET_LD_BUGGY_LDGP" "TARGET_LD_BUGGY_LDGP"
"@ "ldq $29,%0"
bis $31,%0,$29 [(set_attr "type" "ild")])
ldq $29,%0"
[(set_attr "type" "ilog,ild")])
(define_expand "nonlocal_goto_receiver" (define_expand "nonlocal_goto_receiver"
[(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE) [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)
......
...@@ -2483,7 +2483,6 @@ rest_of_compilation (decl) ...@@ -2483,7 +2483,6 @@ rest_of_compilation (decl)
carry magic hard reg data throughout the function. */ carry magic hard reg data throughout the function. */
rtx_equal_function_value_matters = 0; rtx_equal_function_value_matters = 0;
purge_hard_subreg_sets (get_insns ()); purge_hard_subreg_sets (get_insns ());
emit_initial_value_sets ();
/* Early return if there were errors. We can run afoul of our /* Early return if there were errors. We can run afoul of our
consistency checks, and there's not really much point in fixing them. consistency checks, and there's not really much point in fixing them.
...@@ -2518,6 +2517,10 @@ rest_of_compilation (decl) ...@@ -2518,6 +2517,10 @@ rest_of_compilation (decl)
timevar_pop (TV_JUMP); timevar_pop (TV_JUMP);
} }
/* Delay emitting hard_reg_initial_value sets until after EH landing pad
generation, which might create new sets. */
emit_initial_value_sets ();
#ifdef FINALIZE_PIC #ifdef FINALIZE_PIC
/* If we are doing position-independent code generation, now /* If we are doing position-independent code generation, now
is the time to output special prologues and epilogues. is the time to output special prologues and epilogues.
......
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