]> gcc.gnu.org Git - gcc.git/commitdiff
toplev.c (rest_of_compilation): Delay emit_initial_value_sets until after eh landing...
authorRichard Henderson <rth@redhat.com>
Tue, 26 Mar 2002 22:07:47 +0000 (14:07 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 26 Mar 2002 22:07:47 +0000 (14:07 -0800)
        * 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

gcc/ChangeLog
gcc/config/alpha/alpha.c
gcc/config/alpha/alpha.md
gcc/toplev.c

index 67bc5240cb5cf08ea4782b8f27527cf87b298bad..583f54a2591cf265d393dabf2c07bc02a2c8470c 100644 (file)
@@ -1,3 +1,10 @@
+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.
index 60334790bc47041220412002f70143407610dda4..708d0359ebab1c751cd9dce012b54e96fbdb9609 100644 (file)
@@ -5011,7 +5011,10 @@ alpha_return_addr (count, frame)
 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
index fdbdf089b0ccc851b83e6f59b16fc4534bc1fc60..baaecdd7c1fa3fa1779118fbd441e42b7b07971b 100644 (file)
@@ -6706,13 +6706,10 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
    (set_attr "type" "multi")])
 
 (define_insn "*exception_receiver_2"
-  [(unspec_volatile [(match_operand:DI 0 "nonimmediate_operand" "r,m")]
-                   UNSPECV_EHR)]
+  [(unspec_volatile [(match_operand:DI 0 "memory_operand" "m")] UNSPECV_EHR)]
   "TARGET_LD_BUGGY_LDGP"
-  "@
-   bis $31,%0,$29
-   ldq $29,%0"
-  [(set_attr "type" "ilog,ild")])
+  "ldq $29,%0"
+  [(set_attr "type" "ild")])
 
 (define_expand "nonlocal_goto_receiver"
   [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)
index 7268b5aa787480c54bd43ac5199d44a308c3c3b9..ed946ef32efe1d952ae3a7104ee44aad0f89aecf 100644 (file)
@@ -2483,7 +2483,6 @@ rest_of_compilation (decl)
      carry magic hard reg data throughout the function.  */
   rtx_equal_function_value_matters = 0;
   purge_hard_subreg_sets (get_insns ());
-  emit_initial_value_sets ();
 
   /* Early return if there were errors.  We can run afoul of our
      consistency checks, and there's not really much point in fixing them.
@@ -2518,6 +2517,10 @@ rest_of_compilation (decl)
       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
   /* If we are doing position-independent code generation, now
      is the time to output special prologues and epilogues.
This page took 0.09543 seconds and 5 git commands to generate.