Path: utzoo!telly!attcan!uunet!tut.cis.ohio-state.edu!MCC.COM!rfg From: rfg@MCC.COM (Ron Guilmette) Newsgroups: gnu.gcc.bug Subject: BUG(s) in GCC/G++ m88k.md file (1.32.0) Message-ID: <8902031908.AA02418@riunite.aca.mcc.com> Date: 3 Feb 89 19:08:10 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 58 There appears to be a problem with three of the instruction patterns in the m88k.md file (as of 1.32). The andsi3, iorsi3, and xorsi3 patterns cause the upper half of the result word to be clobbered by the second machine instruction generated. This only happens in cases where one of the values to be and'ed, or'ed, or xor'ed is a literal constant. The following minor patches fix all three problems. // Ron Guilmette - MCC - Experimental (parallel) Systems Kit Project // 3500 West Balcones Center Drive, Austin, TX 78759 - (512)338-3740 // ARPA: rfg@mcc.com // UUCP: {rutgers,uunet,gatech,ames,pyramid}!cs.utexas.edu!pp!rfg *** m88k.md- Tue Jan 31 14:46:53 1989 --- m88k.md Fri Feb 3 12:58:03 1989 *************** *** 1659,1663 **** return \"and\\t %0,%1,%2\"; } ! return \"and.u\\t %0,%1,hi16(%2)\;and\\t %0,%1,lo16(%2)\"; }") --- 1659,1663 ---- return \"and\\t %0,%1,%2\"; } ! return \"and.u\\t %0,%1,hi16(%2)\;and\\t %0,%0,lo16(%2)\"; }") *************** *** 1684,1688 **** if (INT_FITS_16_BITS (i)) return \"or\\t %0,%1,%2\"; ! return \"or.u\\t %0,%1,hi16(%2)\;or\\t %0,%1,lo16(%2)\"; }") --- 1684,1688 ---- if (INT_FITS_16_BITS (i)) return \"or\\t %0,%1,%2\"; ! return \"or.u\\t %0,%1,hi16(%2)\;or\\t %0,%0,lo16(%2)\"; }") *************** *** 1711,1715 **** if ((i & 0xffff) == 0) return \"xor.u\\t %0,%1,hi16(%2)\"; ! return \"xor.u\\t %0,%1,hi16(%2)\;xor\\t %0,%1,lo16(%2)\"; }") --- 1711,1715 ---- if ((i & 0xffff) == 0) return \"xor.u\\t %0,%1,hi16(%2)\"; ! return \"xor.u\\t %0,%1,hi16(%2)\;xor\\t %0,%0,lo16(%2)\"; }")