From 97feffc2431bd5d94e162f8eeb583e28fcd2ab4c Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 15 Dec 2001 21:40:26 -0800 Subject: [PATCH] alpha.md (sibcall_osf_1_er): New. * config/alpha/alpha.md (sibcall_osf_1_er): New. (sibcall_value_osf_1_er): New. From-SVN: r48061 --- gcc/ChangeLog | 5 +++++ gcc/config/alpha/alpha.md | 29 ++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9cd09b9dd4e..51f4c5202be 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-12-15 Richard Henderson + + * config/alpha/alpha.md (sibcall_osf_1_er): New. + (sibcall_value_osf_1_er): New. + 2001-12-15 Dan Nicolaescu * config/sparc/sparc.c (mems_ok_for_ldd_peep): Rename from diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index d1634aafea5..0959e58976d 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -4820,7 +4820,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi" "@ jsr $26,(%0),0\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%* bsr $26,$%0..ng - ldq $27,%0($29)\t\t!literal!%#\;jsr $26,($27),0\t\t!lituse_jsr!%#\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*" + ldq $27,%0($29)\t\t!literal!%#\;jsr $26,($27),%0\t\t!lituse_jsr!%#\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*" [(set_attr "type" "jsr") (set_attr "length" "12,*,16")]) @@ -4925,11 +4925,22 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi" ;; Note that the DEC assembler expands "jmp foo" with $at, which ;; doesn't do what we want. +(define_insn "*sibcall_osf_1_er" + [(call (mem:DI (match_operand:DI 0 "symbolic_operand" "R,s")) + (match_operand 1 "" "")) + (use (reg:DI 29))] + "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF" + "@ + br $31,$%0..ng + ldq $27,%0($29)\t\t!literal!%#\;jmp $31,($27),%0\t\t!lituse_jsr!%#" + [(set_attr "type" "jsr") + (set_attr "length" "*,8")]) + (define_insn "*sibcall_osf_1" [(call (mem:DI (match_operand:DI 0 "symbolic_operand" "R,s")) (match_operand 1 "" "")) (use (reg:DI 29))] - "TARGET_ABI_OSF" + "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF" "@ br $31,$%0..ng lda $27,%0\;jmp $31,($27),%0" @@ -6920,12 +6931,24 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi" [(set_attr "type" "jsr") (set_attr "length" "12,*,16")]) +(define_insn "*sibcall_value_osf_1_er" + [(set (match_operand 0 "" "") + (call (mem:DI (match_operand:DI 1 "symbolic_operand" "R,s")) + (match_operand 2 "" ""))) + (use (reg:DI 29))] + "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF" + "@ + br $31,$%1..ng + ldq $27,%1($29)\t\t!literal!%#\;jmp $31,($27),%1\t\t!lituse_jsr!%#" + [(set_attr "type" "jsr") + (set_attr "length" "*,8")]) + (define_insn "*sibcall_value_osf_1" [(set (match_operand 0 "" "") (call (mem:DI (match_operand:DI 1 "symbolic_operand" "R,s")) (match_operand 2 "" ""))) (use (reg:DI 29))] - "TARGET_ABI_OSF" + "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF" "@ br $31,$%1..ng lda $27,%1\;jmp $31,($27),%1"