[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