Details
Details
- Reviewers
RKSimon craig.topper - Commits
- rG06e4db07af09: Experimental re-land of [X86][BMI1] X86DAGToDAGISel: select BEXTR from x << (32…
rG1c95b2f77932: [X86][BMI1] X86DAGToDAGISel: select BEXTR from x << (32 - y) >> (32 - y) pattern
rL345027: Experimental re-land of [X86][BMI1] X86DAGToDAGISel: select BEXTR from x << (32…
rL345014: [X86][BMI1] X86DAGToDAGISel: select BEXTR from x << (32 - y) >> (32 - y) pattern
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
| test/CodeGen/X86/extract-lowbits.ll | ||
|---|---|---|
| 2248 ↗ | (On Diff #170477) | This does not appear to be a miscompile: $ /build/llvm-build-GCC-release/bin/llc -mtriple=i686-unknown-linux-gnu -mattr=+bmi,+tbm,+bmi2 test.ll -o - .text .file "test.ll" .globl bzhi32_d2_load # -- Begin function bzhi32_d2_load .p2align 4, 0x90 .type bzhi32_d2_load,@function bzhi32_d2_load: # @bzhi32_d2_load # %bb.0: movl 4(%esp), %eax movl 8(%esp), %ecx bzhil %ecx, (%eax), %eax retl .Lfunc_end0: .size bzhi32_d2_load, .Lfunc_end0-bzhi32_d2_load # -- End function .section ".note.GNU-stack","",@progbits $ llc-8 -mtriple=i686-unknown-linux-gnu -mattr=+bmi,+tbm,+bmi2 test.ll -o - .text .file "test.ll" .globl bzhi32_d2_load # -- Begin function bzhi32_d2_load .p2align 4, 0x90 .type bzhi32_d2_load,@function bzhi32_d2_load: # @bzhi32_d2_load # %bb.0: movl 8(%esp), %eax movl 4(%esp), %ecx bzhil %eax, (%ecx), %eax retl .Lfunc_end0: .size bzhi32_d2_load, .Lfunc_end0-bzhi32_d2_load # -- End function .section ".note.GNU-stack","",@progbits $ cat test.ll define i32 @bzhi32_d2_load(i32* %w, i32 %numlowbits) nounwind { %val = load i32, i32* %w %numhighbits = sub i32 32, %numlowbits %highbitscleared = shl i32 %val, %numhighbits %masked = lshr i32 %highbitscleared, %numhighbits ret i32 %masked } |
| lib/Target/X86/X86ISelDAGToDAG.cpp | ||
|---|---|---|
| 2705 ↗ | (On Diff #170477) | Size = NVT.getSizeInBits(); |
Comment Actions
Reverted in rL345017.
It looks like there is some miscompile here, since
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/25249/steps/check-lld%20msan/logs/stdio
+ ninja check-lld
[1/3] Linking CXX executable tools/lld/unittests/DriverTests/DriverTests
[2/3] Linking CXX executable tools/lld/unittests/MachOTests/lldMachOTests
[2/3] Running lld test suite
-- Testing: 1914 tests, 64 threads --
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70..
FAIL: lld :: ELF/relocatable-versioned.s (1518 of 1914)
******************** TEST 'lld :: ELF/relocatable-versioned.s' FAILED ********************
Script:
--
: 'RUN: at line 2'; /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/llvm-mc -filetype=obj -triple=x86_64-unknown-linux /b/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/ELF/relocatable-versioned.s -o /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/tools/lld/test/ELF/Output/relocatable-versioned.s.tmp1.o
: 'RUN: at line 3'; /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/ld.lld -o /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/tools/lld/test/ELF/Output/relocatable-versioned.s.tmp2.o -r /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/tools/lld/test/ELF/Output/relocatable-versioned.s.tmp1.o
: 'RUN: at line 4'; /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/llvm-nm /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/tools/lld/test/ELF/Output/relocatable-versioned.s.tmp2.o | /b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/FileCheck /b/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/ELF/relocatable-versioned.s
--
Exit Code: 77
Command Output (stderr):
--
==17758==MemorySanitizer CHECK failed: /b/sanitizer-x86_64-linux-fast/build/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc:191 "((kBlockMagic)) == ((((u64*)addr)[0]))" (0x6a6cb03abcebc041, 0x0)
#0 0x59716b in MsanCheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /b/sanitizer-x86_64-linux-fast/build/llvm/projects/compiler-rt/lib/msan/msan.cc:393
#1 0x586635 in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /b/sanitizer-x86_64-linux-fast/build/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_termination.cc:79
#2 0x57d5ff in __sanitizer::InternalFree(void*, __sanitizer::SizeClassAllocatorLocalCache<__sanitizer::SizeClassAllocator32<__sanitizer::AP32> >*) /b/sanitizer-x86_64-linux-fast/build/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc:191
#3 0x7fc21b24193f (/lib/x86_64-linux-gnu/libc.so.6+0x3593f)
#4 0x7fc21b241999 in exit (/lib/x86_64-linux-gnu/libc.so.6+0x35999)
#5 0x7fc21b22c2e7 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e7)
#6 0x57c039 in _start (/b/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/lld+0x57c039)
--
********************
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
Testing Time: 10.54s
********************
Failing Tests (1):
lld :: ELF/relocatable-versioned.s
Expected Passes : 1881
Unsupported Tests : 32
Unexpected Failures: 1
FAILED: tools/lld/test/CMakeFiles/check-lldreverting appears to have fixed it.
The bot does not appear to be flaky.
Comment Actions
Hm, that was weird.
Avoiding truncating to i8 and then inserting into IMPLICIT_DEF reg (which was kinda ugly anyway) appears to have pacified that buildbot.
Or, there were external factors, i.e. that was flaky false-positive.