[llvm] r325126 - Recommit r325001: [CallSiteSplitting] Support splitting of blocks with instrs before call.
Mikael Holmén via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 26 22:52:53 PST 2018
Hi
On 02/26/2018 05:49 PM, Florian Hahn wrote:
>
>
[...]
>
> 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?
I'm sorry, it seems like I sent you the wrong reproducer. :/
I rebuilt top of tree now and the following crashes with the ll-file now
attached:
opt -S -o - callsite.ll -callsite-splitting
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 0x0000000001eaf4b4 PrintStackTraceSignalHandler(void*)
(build-all/bin/opt+0x1eaf4b4)
#1 0x0000000001eafc26 SignalHandler(int) (build-all/bin/opt+0x1eafc26)
#2 0x00007f90edfd5810 __restore_rt (/lib64/libpthread.so.0+0xf810)
#3 0x00007f90ed180875 __GI_raise (/lib64/libc.so.6+0x32875)
#4 0x00007f90ed181e51 __GI_abort (/lib64/libc.so.6+0x33e51)
#5 0x00007f90ed179740 __GI___assert_fail (/lib64/libc.so.6+0x2b740)
#6 0x0000000001edc6ca
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+0x1edc6ca)
#7 0x0000000001c531fd splitCallSite(llvm::CallSite,
llvm::SmallVectorImpl<std::pair<llvm::BasicBlock*,
llvm::SmallVector<std::pair<llvm::ICmpInst*, unsigned int>, 2u> > >
const&) (build-all/bin/opt+0x1c531fd)
#8 0x0000000001c52873 doCallSiteSplitting(llvm::Function&,
llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&)
(build-all/bin/opt+0x1c52873)
#9 0x0000000001c5456f (anonymous
namespace)::CallSiteSplittingLegacyPass::runOnFunction(llvm::Function&)
(build-all/bin/opt+0x1c5456f)
#10 0x00000000019721a8
llvm::FPPassManager::runOnFunction(llvm::Function&)
(build-all/bin/opt+0x19721a8)
#11 0x00000000019723e8 llvm::FPPassManager::runOnModule(llvm::Module&)
(build-all/bin/opt+0x19723e8)
#12 0x00000000019728c8 llvm::legacy::PassManagerImpl::run(llvm::Module&)
(build-all/bin/opt+0x19728c8)
#13 0x000000000072b2aa main (build-all/bin/opt+0x72b2aa)
#14 0x00007f90ed16cc36 __libc_start_main (/lib64/libc.so.6+0x1ec36)
#15 0x0000000000715aad _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 - callsite.ll
-callsite-splitting
1. Running pass 'Function Pass Manager' on module 'callsite.ll'.
2. Running pass 'Call-site splitting' on function '@main'
Abort
Sorry for the inconvenience,
Mikael
>
> Cheers,
> Florian
-------------- next part --------------
source_filename = "bugpoint-output-2061db5.bc"
target triple = "x86_64-unknown-linux-gnu"
@.str.8 = external constant [14 x i16], align 1
@.str.9 = external constant [9 x i16], align 1
define i16 @main(i16 %argc, i16** %argv) {
entry:
%spec.select = select i1 undef, i16 1, i16 0
%tobool18 = icmp ne i16 %spec.select, 0
br i1 %tobool18, label %for.cond12.us, label %for.cond12
for.cond12.us: ; preds = %entry
unreachable
for.cond12: ; preds = %for.cond12, %entry
call void @transparent_crc(i64 undef, i16* getelementptr inbounds ([9 x i16], [9 x i16]* @.str.9, i32 0, i32 0), i16 %spec.select)
br label %for.cond12
}
define internal void @transparent_crc(i64 %val, i16* %vname, i16 %flag) {
entry:
ret void
}
More information about the llvm-commits
mailing list