[llvm] r325126 - Recommit r325001: [CallSiteSplitting] Support splitting of blocks with instrs before call.

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 26 08:49:15 PST 2018



On 19/02/2018 08:28, Mikael Holmén wrote:
> Hi Florian,
> 
> I ran into a failed assertion with this commit:
> 
> opt -S -o - foo.ll -callsite-splitting
> 
> gives
> 
> opt: ../include/llvm/ADT/ilist_iterator.h:140: reference 
> llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, 
> true, false, void>, false, false>::operator*() const [OptionsT = 
> llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, 
> IsReverse = false, IsConst = false]: Assertion 
> `!NodePtr->isKnownSentinel()' failed.
> #0 0x0000000001ec20d4 PrintStackTraceSignalHandler(void*) 
> (build-all/bin/opt+0x1ec20d4)
> #1 0x0000000001ec2846 SignalHandler(int) (build-all/bin/opt+0x1ec2846)
> #2 0x00007fb6628a8810 __restore_rt (/lib64/libpthread.so.0+0xf810)
> #3 0x00007fb661a53875 __GI_raise (/lib64/libc.so.6+0x32875)
> #4 0x00007fb661a54e51 __GI_abort (/lib64/libc.so.6+0x33e51)
> #5 0x00007fb661a4c740 __GI___assert_fail (/lib64/libc.so.6+0x2b740)
> #6 0x0000000001eee3ba 
> llvm::DuplicateInstructionsInSplitBetween(llvm::BasicBlock*, 
> llvm::BasicBlock*, llvm::Instruction*, llvm::ValueMap<llvm::Value 
> const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, 
> llvm::sys::SmartMutex<false> > >&) (build-all/bin/opt+0x1eee3ba)
> #7 0x0000000001c5f31d splitCallSite(llvm::CallSite, 
> llvm::SmallVectorImpl<std::pair<llvm::BasicBlock*, 
> llvm::SmallVector<std::pair<llvm::ICmpInst*, unsigned int>, 2u> > > 
> const&) (build-all/bin/opt+0x1c5f31d)
> #8 0x0000000001c5e993 doCallSiteSplitting(llvm::Function&, 
> llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&) 
> (build-all/bin/opt+0x1c5e993)
> #9 0x0000000001c6068f (anonymous 
> namespace)::CallSiteSplittingLegacyPass::runOnFunction(llvm::Function&) 
> (build-all/bin/opt+0x1c6068f)
> #10 0x000000000197e648 
> llvm::FPPassManager::runOnFunction(llvm::Function&) 
> (build-all/bin/opt+0x197e648)
> #11 0x000000000197e888 llvm::FPPassManager::runOnModule(llvm::Module&) 
> (build-all/bin/opt+0x197e888)
> #12 0x000000000197ed68 llvm::legacy::PassManagerImpl::run(llvm::Module&) 
> (build-all/bin/opt+0x197ed68)
> #13 0x000000000072a7f3 main (build-all/bin/opt+0x72a7f3)
> #14 0x00007fb661a3fc36 __libc_start_main (/lib64/libc.so.6+0x1ec36)
> #15 0x00000000007150dd _start 
> /usr/src/packages/BUILD/glibc-2.11.3/csu/../sysdeps/x86_64/elf/start.S:116:0 
> 
> Stack dump:
> 0.      Program arguments: build-all/bin/opt -S -o - foo.ll 
> -callsite-splitting
> 1.      Running pass 'Function Pass Manager' on module 'foo.ll'.
> 2.      Running pass 'Call-site splitting' on function '@main'
> Abort
> 

Unfortunately I could not reproduce this failure with a release build 
with assertions. Could you provide any additional details about the 
build you used to re-produce this failure?

Cheers,
Florian


More information about the llvm-commits mailing list