PATCH for PR18045 (X86 inst selection failure)

Stepan Dyatkovskiy stpworld at narod.ru
Mon Dec 16 03:22:32 PST 2013


ping
Stepan Dyatkovskiy wrote:
> Hello,
>
> Please find fix + test-case in attachment.
>
> Short description of PR18045 issue:
> For X86 machines with sse < sse4.1 we got failures for some
> particular load/store vector sequences:
>
> $ clang-trunk -m32 -O2 test-case.c
> fatal error: error in backend: Cannot select: 0x4200920: v4i32,ch = load
> 0x41d6ab0, 0x4205850,
>        0x41dcb10<LD16[getelementptr inbounds ([4 x i32]* @e, i32 0, i32
> 0)](align=4)> [ORD=82]
>        [ID=58]
>    0x4205850: i32 = X86ISD::Wrapper 0x41d5490 [ORD=26] [ID=43]
>      0x41d5490: i32 = TargetGlobalAddress<[4 x i32]* @e> 0 [ORD=26] [ID=23]
>    0x41dcb10: i32 = undef [ID=2]
>
> The reason is that EltsFromConsecutiveLoads could emit such load
> instruction both before and after legalize stage. Though this
> instruction is not legal for machines with SSSE3 and lower.
>
> The fix: In EltsFromConsecutiveLoads, if we have passed legalize stage,
> we check whether nodes it emits are legal.
>
> -Stepan




More information about the llvm-commits mailing list