alpha.md (sibcall_osf_1): Load destination address into $27 explicitly.
authorRichard Henderson <rth@redhat.com>
Fri, 19 Oct 2001 05:04:54 +0000 (22:04 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 19 Oct 2001 05:04:54 +0000 (22:04 -0700)
        * config/alpha/alpha.md (sibcall_osf_1): Load destination
        address into $27 explicitly.
        (sibcall_value_osf_1): Likewise.

From-SVN: r46340

gcc/ChangeLog
gcc/config/alpha/alpha.md

index dd5331c63c80d323f3272f4b8891ad4f921a54d6..08e0d5beab4c51e53711b6c6d1c229e64ce02cdf 100644 (file)
@@ -1,3 +1,9 @@
+2001-10-18  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.md (sibcall_osf_1): Load destination 
+       address into $27 explicitly.
+       (sibcall_value_osf_1): Likewise.
+
 Thu Oct 18 16:07:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * emit-rtl.c (gen_reg_rtx): Also reallocate reg_decl array.
index 4eecb1d939f96b5466b429b1cc931a30e532e858..039efdd1eddbe313ed7346493b6733799f94d037 100644 (file)
@@ -4848,8 +4848,9 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
   [(set_attr "type" "jsr")
    (set_attr "length" "12,*,16")])
 
-;; Need 's' alternative for OSF/1, which implements profiling
-;; via linker tricks.
+;; Need 's' alternative for OSF/1, which implements profiling via linker
+;; tricks.  Note that the DEC assembler expands "jmp foo" with $at, which
+;; doesn't do what we want.
 (define_insn "*sibcall_osf_1"
   [(call (mem:DI (match_operand:DI 0 "current_file_function_operand" "R,s"))
         (match_operand 1 "" ""))
@@ -4857,7 +4858,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
   "TARGET_ABI_OSF"
   "@
    br $31,$%0..ng
-   jmp $31,%0"
+   lda $27,%0\;jmp $31,($27),%0"
   [(set_attr "type" "jsr")
    (set_attr "length" "*,8")])
 
@@ -6817,7 +6818,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
   "TARGET_ABI_OSF"
   "@
    br $31,$%1..ng
-   jmp $31,%1"
+   lda $27,%1\;jmp $31,($27),%1"
   [(set_attr "type" "jsr")
    (set_attr "length" "*,8")])