diff mbox

[ARM] Fix arm_init_iwmmxt_builtins to handle only iwmmxt entries

Message ID 52CEDDA0.5060408@arm.com
State New
Headers show

Commit Message

Kyrylo Tkachov Jan. 9, 2014, 5:34 p.m. UTC
Hi all,

After my CRC32 intrinsics patch that added new entries into the bdesc_2arg 
table, the arm_init_iwmmxt_builtins function tries to iterate over them and 
blows up, causing an ICE when trying to compile with -mcpu=iwmmxt.

This patch fixes that by ignoring the non-iwmmxt entries in that table when 
initialising the iwmmxt builtins.


With this patch the gcc.target/arm/mmx-2.c comes back and PASSes.

Tested arm-none-eabi on qemu.

Ok for trunk?

Thanks,
Kyrill


2014-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

     * config/arm/arm.c (arm_init_iwmmxt_builtins): Skip
     non-iwmmxt builtins.

Comments

Richard Earnshaw Jan. 10, 2014, 11:31 a.m. UTC | #1
On 09/01/14 17:34, Kyrill Tkachov wrote:
> Hi all,
> 
> After my CRC32 intrinsics patch that added new entries into the bdesc_2arg 
> table, the arm_init_iwmmxt_builtins function tries to iterate over them and 
> blows up, causing an ICE when trying to compile with -mcpu=iwmmxt.
> 
> This patch fixes that by ignoring the non-iwmmxt entries in that table when 
> initialising the iwmmxt builtins.
> 
> 
> With this patch the gcc.target/arm/mmx-2.c comes back and PASSes.
> 
> Tested arm-none-eabi on qemu.
> 
> Ok for trunk?
> 
> Thanks,
> Kyrill
> 
> 
> 2014-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
> 
>      * config/arm/arm.c (arm_init_iwmmxt_builtins): Skip
>      non-iwmmxt builtins.
> 
> 

OK.

R.
diff mbox

Patch

diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index c8bf7c1..842d67f 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -24244,7 +24244,7 @@  arm_init_iwmmxt_builtins (void)
       enum machine_mode mode;
       tree type;
 
-      if (d->name == 0)
+      if (d->name == 0 || !(d->mask == FL_IWMMXT || d->mask == FL_IWMMXT2))
 	continue;
 
       mode = insn_data[d->icode].operand[1].mode;