tiemann@arkesden.eng.sun.com (Michael Tiemann) (11/28/89)
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
schmidt@zola.ics.uci.edu (Doug Schmidt) (11/28/89)
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