add patch fixing sh sibcall bug that affected musl, remove workaround

This commit is contained in:
Rich Felker 2016-02-12 05:35:23 +00:00
parent 6385b3240a
commit 69cadffdec
3 changed files with 39 additions and 3 deletions

View File

@ -143,7 +143,6 @@ musl/.mcm_cloned:
musl/.mcm_configured: musl/.mcm_cloned gcc-$(GCC_VER)/build0/.mcm_built musl/.mcm_configured: musl/.mcm_cloned gcc-$(GCC_VER)/build0/.mcm_built
cd musl && ./configure $(MUSL_CONFIG) cd musl && ./configure $(MUSL_CONFIG)
cat patches/musl-complex-hack >> musl/config.mak
touch $@ touch $@
musl/.mcm_built: musl/.mcm_configured musl/.mcm_built: musl/.mcm_configured

View File

@ -0,0 +1,39 @@
--- a/gcc/config/sh/sh.md (revision 233324)
+++ b/gcc/config/sh/sh.md (working copy)
@@ -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],

View File

@ -1,2 +0,0 @@
$(patsubst %.c,%.o,$(wildcard src/complex/*.c)): CFLAGS += -fno-optimize-sibling-calls
$(patsubst %.c,%.lo,$(wildcard src/complex/*.c)): CFLAGS += -fno-optimize-sibling-calls