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