[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