From 6248c4ddc8095dfefd8c8a37fbc625a80d4e0456 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Fri, 31 May 2002 05:41:30 +0000 Subject: [PATCH] pa.c (output_millicode_call): Correct "be,l" insn for TARGET_PA_20. * pa.c (output_millicode_call): Correct "be,l" insn for TARGET_PA_20. (output_call): Likewise. From-SVN: r54088 --- gcc/ChangeLog | 5 +++++ gcc/config/pa/pa.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c03b7a329f..90bbe7e7e68 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-05-31 John David Anglin + + * pa.c (output_millicode_call): Correct "be,l" insn for TARGET_PA_20. + (output_call): Likewise. + 2002-05-31 John David Anglin * pa.c: Move output.h include after tree.h include. diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index e493d6f8a48..4ace172d0d0 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -6099,7 +6099,10 @@ output_millicode_call (insn, call_dest) { xoperands[0] = call_dest; output_asm_insn ("ldil L%%%0,%3", xoperands); - output_asm_insn ("{ble|be,l} R%%%0(%%sr4,%3)", xoperands); + if (TARGET_PA_20) + output_asm_insn ("be,l R%%%0(%%sr4,%3),%sr0,%r31", xoperands); + else + output_asm_insn ("ble R%%%0(%%sr4,%3)", xoperands); output_asm_insn ("nop", xoperands); } @@ -6355,8 +6358,11 @@ output_call (insn, call_dest, sibcall) /* Get the high part of the address of $dyncall into %r2, then add in the low part in the branch instruction. */ output_asm_insn ("ldil L%%$$dyncall,%%r2", xoperands); - output_asm_insn ("{ble|be,l} R%%$$dyncall(%%sr4,%%r2)", - xoperands); + if (TARGET_PA_20) + output_asm_insn ("be,l R%%$$dyncall(%%sr4,%%r2),%sr0,%r31", + xoperands); + else + output_asm_insn ("ble R%%$$dyncall(%%sr4,%%r2)", xoperands); if (sibcall) { -- 2.30.2