This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATH: sparc64 bootstrap problems on FreeBSD (PR 10453)
- From: Alexander Kabaev <ak03 at gte dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Loren James Rittle <rittle at labs dot mot dot com>, "David O'Brien"<obrien at freebsd dot org>, Gerald Pfeifer <pfeifer at dbai dot tuwien dot ac dot at>
- Date: Thu, 24 Apr 2003 10:51:14 -0400
- Subject: PATH: sparc64 bootstrap problems on FreeBSD (PR 10453)
- Organization: Verizon Data Services
The patch below fixes a bug in GCC which renders compiler unusable on
FreeBSD. The patch was reviewed by Jakub Jelinek <jakub at redhat dot 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 at labs dot mot dot com> has agreed to apply the patch
if it is approved.
--
Alexander Kabaev
2003-04-24 Alexander Kabaev <kan at FreeBSD dot 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;
}