[PATCH] D20178: Fix PR26055 - LiveDebugValues is very slow

Daniel Berlin via llvm-commits llvm-commits at lists.llvm.org
Sun May 15 14:46:27 PDT 2016


My guess is you have a case where the iterator invalidation causes it to
crash :)


On Sun, May 15, 2016 at 1:40 PM, Davide Italiano <dccitaliano at gmail.com>
wrote:

> davide added a comment.
>
> First, let me tell you that I'm very excited about this patch. During an
> LTO build of medium-to-large sized C++ applications, I can clearly see this
> pass showing up in the profile, so I decided to benchmark it.
> Unfortunately, I think the patch as is introduces a regression :(
>
> #0 0x00000000005e4398 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
> (/home/davide/work/build-llvm/bin/lld+0x5e4398) 0x00000000005e1eee
> llvm::sys::RunSignalHandlers()
> (/home/davide/work/build-llvm/bin/lld+0x5e1eee)
> #2 0x00000000005e2136 SignalHandler(int)
> (/home/davide/work/build-llvm/bin/lld+0x5e2136)
> #3 0x00007f71573309f0 __restore_rt (/lib64/libpthread.so.0+0x109f0)
> #4 0x000000000141867c (anonymous
> namespace)::LiveDebugValues::transferRegisterDef(llvm::MachineInstr&,
> llvm::SparseBitVector<128u>&, llvm::UniqueVector<(anonymous
> namespace)::LiveDebugValues::VarLoc> const&) [clone .isra.178] [clone
> .constprop.275] (/home/davide/work/build-llvm/bin/lld+0x141867c)
> #5 0x000000000141a827 (anonymous
> namespace)::LiveDebugValues::ExtendRanges(llvm::MachineFunction&) [clone
> .constprop.265] (/home/davide/work/build-llvm/bin/lld+0x141a827)
> #6 0x0000000001479b65
> llvm::MachineFunctionPass::runOnFunction(llvm::Function&)
> (/home/davide/work/build-llvm/bin/lld+0x1479b65)
> #7 0x0000000001c3a0b2 llvm::FPPassManager::runOnFunction(llvm::Function&)
> (/home/davide/work/build-llvm/bin/lld+0x1c3a0b2)
> #8 0x0000000001c3a41b llvm::FPPassManager::runOnModule(llvm::Module&)
> (/home/davide/work/build-llvm/bin/lld+0x1c3a41b)
> #9 0x0000000001c39bfe llvm::legacy::PassManagerImpl::run(llvm::Module&)
> (/home/davide/work/build-llvm/bin/lld+0x1c39bfe)
> #10 0x00000000014dae09 codegen(llvm::Module*, llvm::raw_pwrite_stream&,
> std::function<std::unique_ptr<llvm::TargetMachine,
> std::default_delete<llvm::TargetMachine> > ()>,
> llvm::TargetMachine::CodeGenFileType) [clone .constprop.50]
> (/home/davide/work/build-llvm/bin/lld+0x14dae09)
> #11 0x00000000014db08a llvm::splitCodeGen(std::unique_ptr<llvm::Module,
> std::default_delete<llvm::Module> >,
> llvm::ArrayRef<llvm::raw_pwrite_stream*>,
> llvm::ArrayRef<llvm::raw_pwrite_stream*>,
> std::function<std::unique_ptr<llvm::TargetMachine,
> std::default_delete<llvm::TargetMachine> > ()> const&,
> llvm::TargetMachine::CodeGenFileType, bool)
> (/home/davide/work/build-llvm/bin/lld+0x14db08a)
> #12 0x00000000005bb240
> lld::elf::BitcodeCompiler::runSplitCodegen(std::function<std::unique_ptr<llvm::TargetMachine,
> std::default_delete<llvm::TargetMachine> > ()> const&)
> (/home/davide/work/build-llvm/bin/lld+0x5bb240)
> #13 0x00000000005bc827 lld::elf::BitcodeCompiler::compile()
> (/home/davide/work/build-llvm/bin/lld+0x5bc827)
> #14 0x000000000057ab45
> lld::elf::SymbolTable<llvm::object::ELFType<(llvm::support::endianness)1,
> true> >::addCombinedLtoObject()
> (/home/davide/work/build-llvm/bin/lld+0x57ab45)
> #15 0x00000000004ecfb8 void
> lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1,
> true> >(llvm::opt::InputArgList&)
> (/home/davide/work/build-llvm/bin/lld+0x4ecfb8)
> #16 0x000000000044e7ec lld::elf::LinkerDriver::main(llvm::ArrayRef<char
> const*>) (/home/davide/work/build-llvm/bin/lld+0x44e7ec)
> #17 0x00000000004eefbe lld::elf::link(llvm::ArrayRef<char const*>,
> llvm::raw_ostream&, bool) (/home/davide/work/build-llvm/bin/lld+0x4eefbe)
> #18 0x000000000044dce7 main (/home/davide/work/build-llvm/bin/lld+0x44dce7)
> #19 0x00007f71564ce580 __libc_start_main (/lib64/libc.so.6+0x20580)
> #20 0x00000000004a03b9 _start
> (/home/davide/work/build-llvm/bin/lld+0x4a03b9)
> Stack dump:
> 0.      Program arguments:
>
> 1. Running pass 'Function Pass Manager' on module 'ld-temp.o'.
> 2. Running pass 'Live DEBUG_VALUE analysis' on function '@_Z10iPPc'
>
> I have limited time next week, but I'll try anyway to reduce a test case
> for you ASAP.
>
>
> http://reviews.llvm.org/D20178
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160515/150383f9/attachment.html>


More information about the llvm-commits mailing list