Codegen regression caused by r207337

Richard Barton richard.barton at arm.com
Tue Apr 29 02:29:53 PDT 2014


Doh - I can't spell! Sorry Craig.

> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of Richard Barton
> Sent: 29 April 2014 09:55
> To: crag.topper at gmail.com
> Cc: llvm-commits at cs.uiuc.edu
> Subject: Codegen regression caused by r207337
> 
> Hi Craig
> 
> Your refactoring change to the AArch64 backend at r207337 seems to have
> caused an internal fault in the instruction selector.
> 
> > clang -c -O2 ~/scratch/besttry.c -target aarch64
> fatal error: error in backend: Cannot select: 0x43e83d0: v2i64 = mulhs
> 0x43f1320, 0x43f0340
>       [ORD=5] [ID=51]
>   0x43f1320: v2i64 = add 0x43f1110, 0x43f0448 [ORD=4] [ID=47]
>     0x43f1110: v2i64 = AArch64ISD::NEON_VDUP 0x43e7b90 [ORD=3] [ID=35]
>       0x43e7b90: i64,ch = CopyFromReg 0x4390e90, 0x43e7560 [ORD=2] [ID=27]
>         0x43e7560: i64 = Register %vreg0 [ID=1]
>     0x43f0448: v2i64,ch = load 0x4390e90, 0x43f1f10,
> 0x43eb8e8<LD16[ConstantPool]> [ORD=4] [ID=41]
>       0x43f1f10: i64 = AArch64ISD::WrapperSmall 0x43f3d90, 0x43e81c0,
> 0x43ecd60 [ID=34]
>         0x43f3d90: i64 = TargetConstantPool<<2 x i64> <i64 6, i64 7>> 0
[ID=26]
>         0x43e81c0: i64 = TargetConstantPool<<2 x i64> <i64 6, i64 7>> 0
[TF=11]
> [ID=25]
>         0x43ecd60: i32 = Constant<16> [ID=18]
>       0x43eb8e8: i64 = undef [ID=6]
>   0x43f0340: v2i64 = AArch64ISD::NEON_VDUP 0x43e7c98 [ID=28]
>     0x43e7c98: i64 = Constant<1166592510590327375> [ID=14] In function:
main
> clang-3.5: error: clang frontend command failed with exit code 70 (use -v
to see
> invocation)
> 
> Below is a reduced example (also attached) that produces the fault:
> 
> int errs = 0;
> int main()
> {
> #define SIZE 254L
> #define SIZE2 253L
>     unsigned char buf[SIZE];
>     int i;
>     for (i = 0; i < SIZE; ++i)
>         buf[i] = i % SIZE2;
>     if (!(buf[i] == i % SIZE2))
>         ++errs;
> }
> 
> I can remove the fault by reducing the optimisation level or by playing
with the
> values of SIZE and SIZE2 (the fault only occurs when SIZE > SIZE2)
> 
> Thanks
> Rich







More information about the llvm-commits mailing list