40 lines
1.2 KiB
Diff
40 lines
1.2 KiB
Diff
--- a/gcc/config/sh/sh.md
|
|
+++ b/gcc/config/sh/sh.md
|
|
@@ -10476,7 +10476,7 @@
|
|
(call (mem:SI (match_operand:SI 1 "symbol_ref_operand" ""))
|
|
(match_operand 2 "" "")))
|
|
(use (reg:SI FPSCR_MODES_REG))
|
|
- (clobber (match_scratch:SI 3 "=&k"))
|
|
+ (clobber (reg:SI R1_REG))
|
|
(return)]
|
|
"TARGET_SH2 && !TARGET_FDPIC"
|
|
"#"
|
|
@@ -10491,6 +10495,8 @@
|
|
rtx lab = PATTERN (gen_call_site ());
|
|
rtx call_insn;
|
|
|
|
+ operands[3] = gen_rtx_REG (SImode, R1_REG);
|
|
+
|
|
sh_expand_sym_label2reg (operands[3], operands[1], lab, true);
|
|
call_insn = emit_call_insn (gen_sibcall_valuei_pcrel (operands[0],
|
|
operands[3],
|
|
@@ -10511,7 +10519,7 @@
|
|
(match_operand 2)))
|
|
(use (reg:SI FPSCR_MODES_REG))
|
|
(use (reg:SI PIC_REG))
|
|
- (clobber (match_scratch:SI 3 "=k"))
|
|
+ (clobber (reg:SI R1_REG))
|
|
(return)]
|
|
"TARGET_SH2 && TARGET_FDPIC"
|
|
"#"
|
|
@@ -10520,6 +10528,8 @@
|
|
{
|
|
rtx lab = PATTERN (gen_call_site ());
|
|
|
|
+ operands[3] = gen_rtx_REG (SImode, R1_REG);
|
|
+
|
|
sh_expand_sym_label2reg (operands[3], operands[1], lab, true);
|
|
rtx i = emit_call_insn (gen_sibcall_valuei_pcrel_fdpic (operands[0],
|
|
operands[3],
|
|
|