PATH: sparc64 bootstrap problems on FreeBSD (PR 10453)
Alexander Kabaev
ak03@gte.com
Thu Apr 24 14:51:00 GMT 2003
The patch below fixes a bug in GCC which renders compiler unusable on
FreeBSD. The patch was reviewed by Jakub Jelinek <jakub@redhat.com>
already and was found to be ok.
I successfully bootstraped GCC mainline and GCC 3.3 on FreeBSD
5.0-CURRENT and on Solaris8. The test suite run with no regressions on
Solaris with this patch applied.
I am asking permission for this patch to be applied to both trunk and
gcc-3_3-branch. Since I do not have write access to GCC repository,
Loren James Rittle <rittle@labs.mot.com> has agreed to apply the patch
if it is approved.
--
Alexander Kabaev
2003-04-24 Alexander Kabaev <kan@FreeBSD.ORG>
* config/sparc/sparc.md (umulsidi3, mulsidi3): Avoid using
const_umulsidi3_sp32 and const_mulsidi3_sp32 on 64bit targets
where they might be not present. Use their _sp64 equivalent
instead.
Index: sparc.md
===================================================================
RCS file: /usr/ncvs2/src/contrib/gcc/config/sparc/sparc.md,v
retrieving revision 1.1.1.9
diff -u -c -r1.1.1.9 sparc.md
*** sparc.md 3 Apr 2003 01:53:52 -0000 1.1.1.9
--- sparc.md 22 Apr 2003 14:20:09 -0000
***************
*** 5289,5297 ****
if (TARGET_V8PLUS)
emit_insn (gen_const_mulsidi3_v8plus (operands[0], operands[1],
operands[2]));
! else
emit_insn (gen_const_mulsidi3_sp32 (operands[0], operands[1],
operands[2]));
DONE;
}
if (TARGET_V8PLUS)
--- 5289,5300 ----
if (TARGET_V8PLUS)
emit_insn (gen_const_mulsidi3_v8plus (operands[0], operands[1],
operands[2]));
! else if (TARGET_ARCH32)
emit_insn (gen_const_mulsidi3_sp32 (operands[0], operands[1],
operands[2]));
+ else
+ emit_insn (gen_const_mulsidi3_sp64 (operands[0], operands[1],
+ operands[2]));
DONE;
}
if (TARGET_V8PLUS)
***************
*** 5495,5502 ****
if (TARGET_V8PLUS)
emit_insn (gen_const_umulsidi3_v8plus (operands[0], operands[1],
operands[2]));
! else
emit_insn (gen_const_umulsidi3_sp32 (operands[0], operands[1],
operands[2]));
DONE;
}
--- 5498,5508 ----
if (TARGET_V8PLUS)
emit_insn (gen_const_umulsidi3_v8plus (operands[0], operands[1],
operands[2]));
! else if (TARGET_ARCH32)
emit_insn (gen_const_umulsidi3_sp32 (operands[0], operands[1],
+ operands[2]));
+ else
+ emit_insn (gen_const_umulsidi3_sp64 (operands[0], operands[1],
operands[2]));
DONE;
}
More information about the Gcc-patches
mailing list