This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: target/10073: [3.2/3.3 regression]: powerpc cannot split insn while building rscheme
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Sat, 15 Mar 2003 11:27:25 +1030
- Subject: Re: target/10073: [3.2/3.3 regression]: powerpc cannot split insn while building rscheme
- References: <20030314122600.17983.qmail@sources.redhat.com> <m3el5ayshy.fsf@uniton.integrable-solutions.net> <20030314084850.A10016@devserv.devel.redhat.com> <20030314140803.GG23858@bubble.sa.bigpond.net.au>
On Sat, Mar 15, 2003 at 12:38:04AM +1030, Alan Modra wrote:
> On Fri, Mar 14, 2003 at 08:48:50AM -0500, Jakub Jelinek wrote:
> > On Fri, Mar 14, 2003 at 02:42:17PM +0100, Gabriel Dos Reis wrote:
> > > Did you regtest it? If so, I would be happy to have it on 3_2-branch.
>
> In progress. I'm heading to bed, and will report back in the morning.
No regressions. powerpc-linux, powerpc64-linux c,c++,f77 on gcc-3.3
branch.
* combine.c (force_to_mode <NOT>): Use gen_int_mode.
OK mainline and 3.3?
Index: gcc/combine.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/combine.c,v
retrieving revision 1.347
diff -u -p -r1.347 combine.c
--- gcc/combine.c 8 Mar 2003 01:38:25 -0000 1.347
+++ gcc/combine.c 14 Mar 2003 12:18:35 -0000
@@ -7358,7 +7358,8 @@ force_to_mode (x, mode, mask, reg, just_
< GET_MODE_BITSIZE (GET_MODE (x)))
&& INTVAL (XEXP (XEXP (x, 0), 1)) < HOST_BITS_PER_WIDE_INT)
{
- temp = GEN_INT (mask << INTVAL (XEXP (XEXP (x, 0), 1)));
+ temp = gen_int_mode (mask << INTVAL (XEXP (XEXP (x, 0), 1)),
+ GET_MODE (x));
temp = gen_binary (XOR, GET_MODE (x), XEXP (XEXP (x, 0), 0), temp);
x = gen_binary (LSHIFTRT, GET_MODE (x), temp, XEXP (XEXP (x, 0), 1));
> > Also, a minimal testcase for it would be very good if it can be distilled.
>
> typedef struct
> {
> unsigned short digits[4];
> } INT_64;
>
> INT_64 int_64_com (INT_64 a)
> {
> a.digits[0] ^= 0xFFFF;
> a.digits[1] ^= 0xFFFF;
> a.digits[2] ^= 0xFFFF;
> a.digits[3] ^= 0xFFFF;
> return a;
> }
--
Alan Modra
IBM OzLabs - Linux Technology Centre