Richard Zidlicky writes: > Hi, > > the problem has been already discussed some time > ago "upstream", now ocatve triggered the bug so > it seems the fix should be backported to 3.3 > > octave problem > http://lists.debian.org/debian-68k/2005/02/msg00049.html
that message has another (.extbf) patch in it. > gcc discussion > http://gcc.gnu.org/ml/gcc/2004-03/msg00940.html > http://gcc.gnu.org/ml/gcc/2004-03/msg01007.html > http://gcc.gnu.org/ml/gcc/2004-03/msg01011.html > > Attached patches, one per 3.3 and 3.4. I am leaving > tomorrow so the patches are essentially untested > although I have used very similar patch for 3.4 > since almost a year. I'm applying the patch for 3.4 now, debian-m68k, should the patch applied without testing to 3.3 as well? Matthias > --- gcc-3.3.1/gcc/config/m68k/m68k.md.rz Wed Mar 2 00:49:35 2005 > +++ gcc-3.3.1/gcc/config/m68k/m68k.md Wed Mar 2 01:06:29 2005 > @@ -1750,11 +1750,20 @@ > "* > { > CC_STATUS_INIT; > - operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); > - if (TARGET_68020 || TARGET_5200) > - return \"move%.b %1,%2\;extb%.l %2\;smi %0\;extb%.l %0\"; > + if (ADDRESS_REG_P(operands[1])) > + { > + if (TARGET_68020 || TARGET_5200) > + return \"move%.w %1,%R0\;extb%.l %R0\;smi %0\;extb%.l %0\"; > + else > + return \"move%.w %1,%R0\;ext%.w %R0\;ext%.l %R0\;move%.l %R0,%0\;smi > %0\"; > + } > else > - return \"move%.b %1,%2\;ext%.w %0\;ext%.l %2\;move%.l %2,%0\;smi %0\"; > + { > + if (TARGET_68020 || TARGET_5200) > + return \"move%.b %1,%R0\;extb%.l %R0\;smi %0\;extb%.l %0\"; > + else > + return \"move%.b %1,%R0\;ext%.w %R0\;ext%.l %R0\;move%.l %R0,%0\;smi > %0\"; > + } > }") > > (define_insn "extendhidi2" > --- gcc-3.4-20040218/gcc/config/m68k/m68k.md.rz Wed Mar 2 00:17:11 2005 > +++ gcc-3.4-20040218/gcc/config/m68k/m68k.md Wed Mar 2 00:21:36 2005 > @@ -1454,11 +1454,20 @@ > "" > { > CC_STATUS_INIT; > - operands[2] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); > - if (TARGET_68020 || TARGET_COLDFIRE) > - return "move%.b %1,%2\;extb%.l %2\;smi %0\;extb%.l %0"; > + if (ADDRESS_REG_P(operands[1])) > + { > + if (TARGET_68020 || TARGET_COLDFIRE) > + return "move%.w %1,%R0\;extb%.l %R0\;smi %0\;extb%.l %0"; > + else > + return "move%.w %1,%R0\;ext%.w %R0\;ext%.l %R0\;move%.l %R0,%0\;smi > %0"; > + } > else > - return "move%.b %1,%2\;ext%.w %0\;ext%.l %2\;move%.l %2,%0\;smi %0"; > + { > + if (TARGET_68020 || TARGET_COLDFIRE) > + return "move%.b %1,%R0\;extb%.l %R0\;smi %0\;extb%.l %0"; > + else > + return "move%.b %1,%R0\;ext%.w %R0\;ext%.l %R0\;move%.l %R0,%0\;smi > %0"; > + } > }) > > (define_insn "extendhidi2" -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]