🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by Michael Tiemann Mon, 27 Nov 1989 19:38
GNU C++ 1.36.2 test release
#626
Author: Michael Tiemann
Date: Mon, 27 Nov 1989 19:38
137 lines
5265 bytes
It looks like its time to do another test release: lots of bugs are
being reported which I have already fixed.  There are still some bugs
I want to work on, but in the mean time, I might as well give people
the chance to try out what will be 1.36.2 or 1.37.0, whichever comes
sooner.

A change in the implementation of exception handling (don't ask me for
a paper yet--it's in progress, and will probably be available by
anonymous ftp when I have it done), required a smarter implementation
of inlining.  The version of inlining broke the 1.36 code generator
for the Sun4, but it is easily fixed with the following diffs (which
are going into 1.37).  Similar problems may bite similar code
generators.  If GNU C++ all of a sudden starts generating
unrecognizable insns, chances are your md file needs a fix similar to
the one given here.

    arkesden% diff -c2 config/sparc.md~ config/sparc.md
    *** config/sparc.md~	Fri Sep  1 17:46:40 1989
    --- config/sparc.md	Sat Nov 18 09:04:10 1989
    ***************
    *** 1011,1015 ****
	  return \"sll %1,0x10,%0\;srl %0,0x10,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     abort ();
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    --- 1011,1020 ----
	  return \"sll %1,0x10,%0\;srl %0,0x10,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     {
    !       operands[1] = gen_rtx (CONST_INT, VOIDmode,
    ! 			     INTVAL (operands[1]) & 0xffff);
    !       output_asm_insn (\"set %1,%0\", operands);
    !       return \"\";
    !     }
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    ***************
    *** 1032,1036 ****
	  return \"and %1,0xff,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     abort ();
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    --- 1037,1046 ----
	  return \"and %1,0xff,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     {
    !       operands[1] = gen_rtx (CONST_INT, VOIDmode,
    ! 			     INTVAL (operands[1]) & 0xff);
    !       output_asm_insn (\"set %1,%0\", operands);
    !       return \"\";
    !     }
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    ***************
    *** 1053,1057 ****
	  return \"and %1,0xff,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     abort ();
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    --- 1063,1072 ----
	  return \"and %1,0xff,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     {
    !       operands[1] = gen_rtx (CONST_INT, VOIDmode,
    ! 			     INTVAL (operands[1]) & 0xff);
    !       output_asm_insn (\"set %1,%0\", operands);
    !       return \"\";
    !     }
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    ***************
    *** 1078,1082 ****
	  return \"sll %1,0x10,%0\;sra %0,0x10,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     abort ();
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    --- 1093,1102 ----
	  return \"sll %1,0x10,%0\;sra %0,0x10,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     {
    !       int i = (short)INTVAL (operands[1]);
    !       operands[1] = gen_rtx (CONST_INT, VOIDmode, i);
    !       output_asm_insn (\"set %1,%0\", operands);
    !       return \"\";
    !     }
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    ***************
    *** 1099,1103 ****
	  return \"sll %1,0x18,%0\;sra %0,0x18,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     abort ();
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    --- 1119,1128 ----
	  return \"sll %1,0x18,%0\;sra %0,0x18,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     {
    !       int i = (char)INTVAL (operands[1]);
    !       operands[1] = gen_rtx (CONST_INT, VOIDmode, i);
    !       output_asm_insn (\"set %1,%0\", operands);
    !       return \"\";
    !     }
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    ***************
    *** 1120,1124 ****
	  return \"sll %1,0x18,%0\;sra %0,0x18,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     abort ();
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    --- 1145,1154 ----
	  return \"sll %1,0x18,%0\;sra %0,0x18,%0\";
	if (GET_CODE (operands[1]) == CONST_INT)
    !     {
    !       int i = (char)INTVAL (operands[1]);
    !       operands[1] = gen_rtx (CONST_INT, VOIDmode, i);
    !       output_asm_insn (\"set %1,%0\", operands);
    !       return \"\";
    !     }
	if (CONSTANT_ADDRESS_P (XEXP (operands[1], 0)))
	  {
    arkesden% 

Since labrea is down, I am making these diffs available from
interviews.stanford.edu:~ftp/g++.ytar.Z.  Note that this is where you
can get the InterViews 2.6 prerelease if you are interested, from the
file iv-snapshot.tar.Z.  I'm running it right now.

Have at it,

Michael
Re: GNU C++ 1.36.2 test release
#627
Author: Doug Schmidt
Date: Mon, 27 Nov 1989 22:49
10 lines
932 bytes
In article <8911271938.AA22115@arkesden.sun.com>, tiemann@arkesden (Michael Tiemann) writes:
>interviews.stanford.edu:~ftp/g++.ytar.Z.  

Actually, ~ftp/pub/g++.ytar.Z!

Doug
--
----------------------------------------
"The fundamental principle of science, the definition almost, is this:
the sole test of the validity of any idea is experiment." -- R. P. Feynman
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads