diff options
| author | Stepan Dyatkovskiy <stpworld@narod.ru> | 2013-12-17 12:07:33 +0000 |
|---|---|---|
| committer | Stepan Dyatkovskiy <stpworld@narod.ru> | 2013-12-17 12:07:33 +0000 |
| commit | 7f7c2710e09ca764fa6d7cb90e3acce1bcf4eff2 (patch) | |
| tree | a23a177621d2b05fe91bcc8e0099411906430476 /clang/unittests/Format/FormatTest.cpp | |
| parent | 25d010a98d7b9396e7dbd0cee957233fb6290234 (diff) | |
| download | bcm5719-llvm-7f7c2710e09ca764fa6d7cb90e3acce1bcf4eff2.tar.gz bcm5719-llvm-7f7c2710e09ca764fa6d7cb90e3acce1bcf4eff2.zip | |
Fix for PR18045:
http://llvm.org/bugs/show_bug.cgi?id=18045
Short issue description:
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.
P.S.: If you get failure in time from 12:00 and till 22:00 (UTC-8),
perhaps I'll slow with response, so you better reject this commit. Thanks!
llvm-svn: 197492
Diffstat (limited to 'clang/unittests/Format/FormatTest.cpp')
0 files changed, 0 insertions, 0 deletions

