[llvm] r353426 - [DAG] Cleanup unused node on failed SELECT Combine.
Nirav Davé via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 7 10:57:17 PST 2019
Thanks. I suspect it's actually the similar rL353428 which I've reverted
until I figure out what's going on.
-Nirav
On Thu, Feb 7, 2019 at 1:51 PM Vitaly Buka <vitalybuka at google.com> wrote:
> I suspect this patch is causing this:
>
> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/10737
>
> AIL: LLVM :: CodeGen/AArch64/bswap-known-bits.ll (5521 of 29747)
> ******************** TEST 'LLVM :: CodeGen/AArch64/bswap-known-bits.ll' FAILED ********************
> Script:
> --
> : 'RUN: at line 1'; /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc < /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AArch64/bswap-known-bits.ll -mtriple=aarch64-apple-darwin | /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AArch64/bswap-known-bits.ll
> --
> Exit Code: 2
>
> Command Output (stderr):
> --
> =================================================================
> ==25312==ERROR: AddressSanitizer: use-after-poison on address 0x62100004512a at pc 0x0000056e6d1e bp 0x7ffd018940d0 sp 0x7ffd018940c8
> READ of size 2 at 0x62100004512a thread T0
> #0 0x56e6d1d in getValueType /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:975:5
> #1 0x56e6d1d in getValueType /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1123
> #2 0x56e6d1d in convertSelectOfFPConstantsToLoadOffset /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:18605
> #3 0x56e6d1d in (anonymous namespace)::DAGCombiner::SimplifySelectCC(llvm::SDLoc const&, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::ISD::CondCode, bool) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:18681
> #4 0x565073d in (anonymous namespace)::DAGCombiner::visitZERO_EXTEND(llvm::SDNode*) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:9094:23
> #5 0x55dc7ef in (anonymous namespace)::DAGCombiner::visit(llvm::SDNode*) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1541:40
> #6 0x55d12fc in (anonymous namespace)::DAGCombiner::combine(llvm::SDNode*) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1599:16
> #7 0x55cd397 in Run /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1439:18
> #8 0x55cd397 in llvm::SelectionDAG::Combine(llvm::CombineLevel, llvm::AAResults*, llvm::CodeGenOpt::Level) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:19508
> #9 0x5aa41be in llvm::SelectionDAGISel::CodeGenAndEmitDAG() /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:782:13
> #10 0x5a9dbfa in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1812:7
> #11 0x5a92941 in llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:496:3
> #12 0x411288a in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineFunctionPass.cpp:73:13
> #13 0x4bb42e1 in llvm::FPPassManager::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1643:27
> #14 0x4bb4a02 in llvm::FPPassManager::runOnModule(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1678:16
> #15 0x4bb57c5 in runOnModule /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1743:27
> #16 0x4bb57c5 in llvm::legacy::PassManagerImpl::run(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1856
> #17 0xa512ea in compileModule(char**, llvm::LLVMContext&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llc/llc.cpp:596:8
> #18 0xa4ad10 in main /b/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llc/llc.cpp:350:22
> #19 0x7fbdc37982e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
> #20 0x939159 in _start (/b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc+0x939159)
>
> 0x62100004512a is located 1066 bytes inside of 4096-byte region [0x621000044d00,0x621000045d00)
> allocated by thread T0 here:
> #0 0xa0896f in malloc /b/sanitizer-x86_64-linux-bootstrap/build/llvm/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:145
> #1 0xa87bd6 in safe_malloc /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/Support/MemAlloc.h:26:18
> #2 0xa87bd6 in Allocate /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/Support/Allocator.h:99
> #3 0xa87bd6 in llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul>::StartNewSlab() /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/Support/Allocator.h:400
> #4 0xa87909 in llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul>::Allocate(unsigned long, unsigned long) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/Support/Allocator.h:260:5
> #5 0x59c449b in Allocate<llvm::RegisterSDNode, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096, 4096> > /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/Support/Recycler.h:89:57
> #6 0x59c449b in Allocate<llvm::RegisterSDNode> /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/Support/RecyclingAllocator.h:43
> #7 0x59c449b in newSDNode<llvm::RegisterSDNode, unsigned int &, llvm::EVT &> /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/CodeGen/SelectionDAG.h:338
> #8 0x59c449b in llvm::SelectionDAG::getRegister(unsigned int, llvm::EVT) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1736
> #9 0xbe7788 in getCopyFromReg /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/CodeGen/SelectionDAG.h:706:30
> #10 0xbe7788 in llvm::AArch64TargetLowering::LowerFormalArguments(llvm::SDValue, unsigned int, bool, llvm::SmallVectorImpl<llvm::ISD::InputArg> const&, llvm::SDLoc const&, llvm::SelectionDAG&, llvm::SmallVectorImpl<llvm::SDValue>&) const /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:3095
> #11 0x594db68 in llvm::SelectionDAGISel::LowerArguments(llvm::Function const&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp:9157:26
> #12 0x5a99180 in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1589:5
> #13 0x5a92941 in llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:496:3
> #14 0x411288a in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/CodeGen/MachineFunctionPass.cpp:73:13
> #15 0x4bb42e1 in llvm::FPPassManager::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1643:27
> #16 0x4bb4a02 in llvm::FPPassManager::runOnModule(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1678:16
> #17 0x4bb57c5 in runOnModule /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1743:27
> #18 0x4bb57c5 in llvm::legacy::PassManagerImpl::run(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1856
> #19 0xa512ea in compileModule(char**, llvm::LLVMContext&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llc/llc.cpp:596:8
> #20 0xa4ad10 in main /b/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llc/llc.cpp:350:22
> #21 0x7fbdc37982e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
>
> SUMMARY: AddressSanitizer: use-after-poison /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/CodeGen/SelectionDAGNodes.h:975:5 in getValueTypeShadow bytes around the buggy address:
> 0x0c42800009d0: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 02 f7 f7 f7 f7
> 0x0c42800009e0: f7 f7 f7 f7 f7 f7 00 00 00 00 00 00 00 00 00 00
> 0x0c42800009f0: 00 00 00 f7 00 00 00 00 00 00 00 00 00 00 00 00
> 0x0c4280000a00: 00 f7 00 00 00 00 00 00 00 00 00 00 00 00 00 f7
> 0x0c4280000a10: 00 00 00 00 00 00 00 00 00 00 00 00 00 f7 f7 f7
> =>0x0c4280000a20: f7 02 f7 f7 f7[f7]f7 f7 f7 f7 f7 f7 00 00 00 00
> 0x0c4280000a30: 00 00 00 00 00 00 00 00 00 f7 00 00 00 00 00 00
> 0x0c4280000a40: 00 00 00 00 00 00 00 f7 00 00 00 00 00 00 00 00
> 0x0c4280000a50: 00 00 00 00 00 f7 00 00 00 00 00 00 00 00 00 00
> 0x0c4280000a60: 00 00 00 f7 00 00 00 00 00 00 00 00 00 00 00 00
> 0x0c4280000a70: 00 f7 00 00 00 00 00 00 00 00 00 00 00 00 00 f7
> Shadow byte legend (one shadow byte represents 8 application bytes):
> Addressable: 00
> Partially addressable: 01 02 03 04 05 06 07
> Heap left redzone: fa
> Freed heap region: fd
> Stack left redzone: f1
> Stack mid redzone: f2
> Stack right redzone: f3
> Stack after return: f5
> Stack use after scope: f8
> Global redzone: f9
> Global init order: f6
> Poisoned by user: f7
> Container overflow: fc
> Array cookie: ac
> Intra object redzone: bb
> ASan internal: fe
> Left alloca redzone: ca
> Right alloca redzone: cb
> Shadow gap: cc
> ==25312==ABORTING
> FileCheck error: '-' is empty.
> FileCheck command line: /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AArch64/bswap-known-bits.ll
>
>
>
> On Thu, Feb 7, 2019 at 8:57 AM Nirav Dave via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: niravd
>> Date: Thu Feb 7 08:57:50 2019
>> New Revision: 353426
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=353426&view=rev
>> Log:
>> [DAG] Cleanup unused node on failed SELECT Combine.
>>
>> Modified:
>> llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=353426&r1=353425&r2=353426&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Thu Feb 7
>> 08:57:50 2019
>> @@ -7444,6 +7444,9 @@ SDValue DAGCombiner::visitSELECT(SDNode
>> if (normalizeToSequence || !InnerSelect.use_empty())
>> return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond0,
>> InnerSelect, N2);
>> + // Cleanup on failure.
>> + if (InnerSelect.use_empty())
>> + recursivelyDeleteUnusedNodes(InnerSelect.getNode());
>> }
>> // select (or Cond0, Cond1), X, Y -> select Cond0, X, (select Cond1,
>> X, Y)
>> if (N0->getOpcode() == ISD::OR && N0->hasOneUse()) {
>> @@ -7454,6 +7457,9 @@ SDValue DAGCombiner::visitSELECT(SDNode
>> if (normalizeToSequence || !InnerSelect.use_empty())
>> return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond0, N1,
>> InnerSelect);
>> + // Cleanup on failure.
>> + if (InnerSelect.use_empty())
>> + recursivelyDeleteUnusedNodes(InnerSelect.getNode());
>> }
>>
>> // select Cond0, (select Cond1, X, Y), Y -> select (and Cond0,
>> Cond1), X, Y
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190207/c041d050/attachment.html>
More information about the llvm-commits
mailing list