hacker cling
2013-Jul-05 01:28 UTC
[LLVMdev] Any suggestion for "Unknown instruction type encountered" error?
Hello all, I was playing with LLVM pass. I changed the lib/Transforms/Hello/Hello.cpp 's content to be my own pass. Then I make install the pass and use an example test1.c to see whether it works or not. When I run example using the following command: clang -emit-llvm test1.c -c -o test1.bc opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello < test1.bc > /dev/null It shows the following error: Unknown instruction type encountered! UNREACHABLE executed at include/llvm/InstVisitor.h:120! 0 opt 0x00000000014190b6 llvm::sys::PrintStackTrace(_IO_FILE*) + 38 1 opt 0x0000000001419333 2 opt 0x0000000001418d8b 3 libpthread.so.0 0x0000003aa600f500 4 libc.so.6 0x0000003aa5c328a5 gsignal + 53 5 libc.so.6 0x0000003aa5c34085 abort + 373 6 opt 0x000000000140089b 7 LLVMHello.so 0x00007f889beb5833 8 LLVMHello.so 0x00007f889beb57bd 9 LLVMHello.so 0x00007f889beb575e 10 LLVMHello.so 0x00007f889beb56c5 11 LLVMHello.so 0x00007f889beb55f2 12 LLVMHello.so 0x00007f889beb5401 13 opt 0x00000000013a4e21 llvm::FPPassManager::runOnFunction(llvm::Function&) + 393 14 opt 0x00000000013a5021 llvm::FPPassManager::runOnModule(llvm::Module&) + 89 15 opt 0x00000000013a5399 llvm::MPPassManager::runOnModule(llvm::Module&) + 573 16 opt 0x00000000013a59a8 llvm::PassManagerImpl::run(llvm::Module&) + 254 17 opt 0x00000000013a5bbf llvm::PassManager::run(llvm::Module&) + 39 18 opt 0x000000000084b455 main + 5591 19 libc.so.6 0x0000003aa5c1ecdd __libc_start_main + 253 20 opt 0x000000000083d359 Stack dump: 0. Program arguments: opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello 1. Running pass 'Function Pass Manager' on module '<stdin>'. 2. Running pass 'Hello Pass' on function '@main' I will illustrate the pass code, the test1 example, and the IR generated below, so that anyone could help me or give me some suggestion. Thanks. The Hello.cpp pass is as the following: #define DEBUG_TYPE "hello" #include "llvm/Pass.h" #include "llvm/IR/Module.h" #include "llvm/InstVisitor.h" #include "llvm/IR/Constants.h" #include "llvm/IR/IRBuilder.h" #include "llvm/Support/raw_ostream.h" namespace { struct Hello : public llvm::FunctionPass, llvm::InstVisitor<Hello> { private: llvm::BasicBlock *FailBB; public: static char ID; Hello() : llvm::FunctionPass(ID) {FailBB = 0;} virtual bool runOnFunction(llvm::Function &F) { visit(F); return false; } llvm::BasicBlock *getTrapBB(llvm::Instruction &Inst) { if (FailBB) return FailBB; llvm::Function *Fn = Inst.getParent()->getParent(); llvm::LLVMContext& ctx = Fn->getContext(); llvm::IRBuilder<> builder(ctx); FailBB = llvm::BasicBlock::Create(ctx, "FailBlock", Fn); llvm::ReturnInst::Create(Fn->getContext(), FailBB); return FailBB; } void visitLoadInst(llvm::LoadInst & LI) { } void visitStoreInst(llvm::StoreInst & SI) { llvm::Value * Addr = SI.getOperand(1); llvm::PointerType* PTy = llvm::cast<llvm::PointerType>(Addr->getType()); llvm::Type * ElTy = PTy -> getElementType(); if (!ElTy->isPointerTy()) { llvm::BasicBlock *OldBB = SI.getParent(); llvm::errs() << "yes, got it \n"; llvm::ICmpInst *Cmp = new llvm::ICmpInst(&SI, llvm::CmpInst::ICMP_EQ, Addr, llvm::Constant::getNullValue(Addr->getType()), ""); llvm::Instruction *Iter = &SI; OldBB->getParent()->dump(); llvm::BasicBlock *NewBB = OldBB->splitBasicBlock(Iter, "newBlock"); OldBB->getParent()->dump(); } } }; char Hello::ID = 0; static llvm::RegisterPass<Hello> X("hello", "Hello Pass", false, false); } The test1.c example is as the following: #include <stdio.h> void main() { int x; x = 5; } The IR for the example after adding the pass is as the following: define void @main() #0 { entry: %x = alloca i32, align 4 %0 = icmp eq i32* %x, null br label %newBlock newBlock: ; preds = %entry store i32 5, i32* %x, align 4 ret void } any suggestion? -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130705/a126958b/attachment.html>
Nick Lewycky
2013-Jul-05 19:43 UTC
[LLVMdev] Any suggestion for "Unknown instruction type encountered" error?
hacker cling wrote:> Hello all, > I was playing with LLVM pass. I changed the > lib/Transforms/Hello/Hello.cpp 's content to be my own pass. Then I make > install the pass and use an example test1.c to see whether it works or > not. When I run example using the following command: > clang -emit-llvm test1.c -c -o test1.bc > opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello < test1.bc > > /dev/null > > It shows the following error: > > Unknown instruction type encountered! > UNREACHABLE executed at include/llvm/InstVisitor.h:120!The error message here means that the type of instruction -- alloca, add, sub, load, store, etc. -- is one that did not exist in the compiler at the time that opt was built. This is a static list in the compiler, same as documented on llvm.org/docs/LangRef.html . My guess is that your .bc file is from a very different version of llvm than your 'opt' binary. Perhaps you're using a clang installed on the system and an opt your built yourself? We sometimes change the instruction numbering for the encoding in the .bc files. Does 'opt -verify < test1.bc' work? Another alternative is that you've managed to form invalid IR in some other way, or corrupted memory. Have you tried building 'opt' and LLVMHello.so with debug (so that llvm's assertions are enabled)? And what about running the 'opt' command under valgrind? Nick> 0 opt 0x00000000014190b6 > llvm::sys::PrintStackTrace(_IO_FILE*) + 38 > 1 opt 0x0000000001419333 > 2 opt 0x0000000001418d8b > 3 libpthread.so.0 0x0000003aa600f500 > 4 libc.so.6 0x0000003aa5c328a5 gsignal + 53 > 5 libc.so.6 0x0000003aa5c34085 abort + 373 > 6 opt 0x000000000140089b > 7 LLVMHello.so 0x00007f889beb5833 > 8 LLVMHello.so 0x00007f889beb57bd > 9 LLVMHello.so 0x00007f889beb575e > 10 LLVMHello.so 0x00007f889beb56c5 > 11 LLVMHello.so 0x00007f889beb55f2 > 12 LLVMHello.so 0x00007f889beb5401 > 13 opt 0x00000000013a4e21 > llvm::FPPassManager::runOnFunction(llvm::Function&) + 393 > 14 opt 0x00000000013a5021 > llvm::FPPassManager::runOnModule(llvm::Module&) + 89 > 15 opt 0x00000000013a5399 > llvm::MPPassManager::runOnModule(llvm::Module&) + 573 > 16 opt 0x00000000013a59a8 > llvm::PassManagerImpl::run(llvm::Module&) + 254 > 17 opt 0x00000000013a5bbf > llvm::PassManager::run(llvm::Module&) + 39 > 18 opt 0x000000000084b455 main + 5591 > 19 libc.so.6 0x0000003aa5c1ecdd __libc_start_main + 253 > 20 opt 0x000000000083d359 > Stack dump: > 0. Program arguments: opt -load > ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello > 1. Running pass 'Function Pass Manager' on module '<stdin>'. > 2. Running pass 'Hello Pass' on function '@main' > > I will illustrate the pass code, the test1 example, and the IR generated > below, so that anyone could help me or give me some suggestion. Thanks. > > The Hello.cpp pass is as the following: > > #define DEBUG_TYPE"hello" > #include"llvm/Pass.h" > #include"llvm/IR/Module.h" > #include"llvm/InstVisitor.h" > #include"llvm/IR/Constants.h" > #include"llvm/IR/IRBuilder.h" > #include"llvm/Support/raw_ostream.h" > namespace { > > struct Hello : public llvm::FunctionPass, llvm::InstVisitor<Hello> { > private: > llvm::BasicBlock *FailBB; > public: > static char ID; > Hello() : llvm::FunctionPass(ID) {FailBB = 0;} > > > virtual bool runOnFunction(llvm::Function&F) { > > visit(F); > return false; > } > > llvm::BasicBlock *getTrapBB(llvm::Instruction&Inst) { > > if (FailBB) return FailBB; > llvm::Function *Fn = Inst.getParent()->getParent(); > > llvm::LLVMContext& ctx = Fn->getContext(); > llvm::IRBuilder<> builder(ctx);You don't seem to ever use this builder?> > FailBB = llvm::BasicBlock::Create(ctx,"FailBlock", Fn); > llvm::ReturnInst::Create(Fn->getContext(), FailBB); > return FailBB; > > } > void visitLoadInst(llvm::LoadInst& LI) { > } > > void visitStoreInst(llvm::StoreInst& SI) { > llvm::Value * Addr = SI.getOperand(1); > llvm::PointerType* PTy = llvm::cast<llvm::PointerType>(Addr->getType()); > llvm::Type * ElTy = PTy -> getElementType(); > if (!ElTy->isPointerTy()) { > llvm::BasicBlock *OldBB = SI.getParent(); > llvm::errs()<< "yes, got it \n"; > llvm::ICmpInst *Cmp = new llvm::ICmpInst(&SI, llvm::CmpInst::ICMP_EQ, Addr, llvm::Constant::getNullValue(Addr->getType()),""); > > llvm::Instruction *Iter =&SI; > OldBB->getParent()->dump(); > llvm::BasicBlock *NewBB = OldBB->splitBasicBlock(Iter,"newBlock"); > OldBB->getParent()->dump(); > > } > > } > }; > > char Hello::ID = 0; > static llvm::RegisterPass<Hello> X("hello","Hello Pass", false, false); > } > > The test1.c example is as the following: > > #include<stdio.h> > void main() { > int x; > x = 5; > } > > The IR for the example after adding the pass is as the following: > define void @main() #0 { > entry: > %x = alloca i32, align 4 > %0 = icmp eq i32* %x, null > br label %newBlock > > newBlock: ; preds = %entry > store i32 5, i32* %x, align 4 > ret void > } > > > any suggestion? > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
hacker cling
2013-Jul-06 00:23 UTC
[LLVMdev] Any suggestion for "Unknown instruction type encountered" error?
Hi Nick, 2013/7/6 Nick Lewycky <nicholas at mxc.ca>> hacker cling wrote: > >> Hello all, >> I was playing with LLVM pass. I changed the >> lib/Transforms/Hello/Hello.cpp 's content to be my own pass. Then I make >> install the pass and use an example test1.c to see whether it works or >> not. When I run example using the following command: >> clang -emit-llvm test1.c -c -o test1.bc >> opt -load ../build_llvm/Debug+Asserts/**lib/LLVMHello.so -hello < >> test1.bc >> > /dev/null >> >> It shows the following error: >> >> Unknown instruction type encountered! >> UNREACHABLE executed at include/llvm/InstVisitor.h:**120! >> > > The error message here means that the type of instruction -- alloca, add, > sub, load, store, etc. -- is one that did not exist in the compiler at the > time that opt was built. This is a static list in the compiler, same as > documented on llvm.org/docs/LangRef.html . > > My guess is that your .bc file is from a very different version of llvm > than your 'opt' binary. Perhaps you're using a clang installed on the > system and an opt your built yourself? We sometimes change the instruction > numbering for the encoding in the .bc files. Does 'opt -verify < test1.bc' > work? > >I am sure that the version of llvm and opt are the same since I build them at the same time. opt -version LLVM (http://llvm.org/): LLVM version 3.3svn DEBUG build with assertions. Built Jun 12 2013 (19:47:01). Default target: x86_64-unknown-linux-gnu Host CPU: penryn clang -v clang version 3.3 (trunk 179269) Target: x86_64-unknown-linux-gnu Thread model: posix They are both based on the trunk 179269. (Currently I am working on Cling( http://root.cern.ch/drupal/content/cling), which is based on LLVM and clang with the version 179269). I use opt -verify < test1.bc -f There is no error output. I also use opt -verify -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello < test1.bc -f There is still no other error output except for the "Unknown instruction type encountered!" Another alternative is that you've managed to form invalid IR in some other> way, or corrupted memory. Have you tried building 'opt' and LLVMHello.so > with debug (so that llvm's assertions are enabled)? And what about running > the 'opt' command under valgrind? > > I use valgrind to test it:valgrind --tool=memcheck --leak-check=full opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello < test1.bc > /dev/null ==3609== Memcheck, a memory error detector ==3609== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==3609== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==3609== Command: opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello ==3609= define void @main() #0 { entry: %x = alloca i32, align 4 %0 = icmp eq i32* %x, null br label %newBlock newBlock: ; preds = %entry store i32 5, i32* %x, align 4 ret void } Unknown instruction type encountered! UNREACHABLE executed at /home/sploving/llvm/include/llvm/InstVisitor.h:120! 0 opt 0x00000000014190b6 llvm::sys::PrintStackTrace(_IO_FILE*) + 38 1 opt 0x0000000001419333 2 opt 0x0000000001418d8b 3 libpthread.so.0 0x0000003aa600f500 4 libc.so.6 0x0000003aa5c328a5 gsignal + 53 5 libc.so.6 0x0000003aa5c34085 abort + 373 6 opt 0x000000000140089b 7 LLVMHello.so 0x00000000050278b3 8 LLVMHello.so 0x000000000502783d 9 LLVMHello.so 0x00000000050277de 10 LLVMHello.so 0x0000000005027745 11 LLVMHello.so 0x0000000005027672 12 LLVMHello.so 0x000000000502746d 13 opt 0x00000000013a4e21 llvm::FPPassManager::runOnFunction(llvm::Function&) + 393 14 opt 0x00000000013a5021 llvm::FPPassManager::runOnModule(llvm::Module&) + 89 15 opt 0x00000000013a5399 llvm::MPPassManager::runOnModule(llvm::Module&) + 573 16 opt 0x00000000013a59a8 llvm::PassManagerImpl::run(llvm::Module&) + 254 17 opt 0x00000000013a5bbf llvm::PassManager::run(llvm::Module&) + 39 18 opt 0x000000000084b455 main + 5591 19 libc.so.6 0x0000003aa5c1ecdd __libc_start_main + 253 20 opt 0x000000000083d359 Stack dump: 0. Program arguments: opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello 1. Running pass 'Function Pass Manager' on module '<stdin>'. 2. Running pass 'Hello Pass' on function '@main' ==3609===3609== HEAP SUMMARY: ==3609== in use at exit: 200,735 bytes in 574 blocks ==3609== total heap usage: 2,340 allocs, 1,766 frees, 476,703 bytes allocated ==3609===3609== 26 bytes in 1 blocks are possibly lost in loss record 106 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x85A69A: void llvm::cl::initializer<char [2]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string>> >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&)const (CommandLine.h:290) ==3609== by 0x85912A: void llvm::cl::applicator<llvm::cl::initializer<char [2]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [2]> const&, llvm::cl::opt<std::string, false,llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0x856B05: void llvm::cl::apply<llvm::cl::initializer<char [2]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [2]> const&, llvm::cl::opt<std::string, false,llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0x8532FC: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<llvm::cl::FormattingFlags, llvm::cl::desc, llvm::cl::initializer<char [2]>, llvm::cl::value_desc>(llvm::cl::FormattingFlags const&, llvm::cl::desc const&, llvm::cl::initializer<char [2]> const&, llvm::cl::value_desc const&) (CommandLine.h:1195) ==3609== by 0x84C9CA: __static_initialization_and_destruction_0(int, int) (opt.cpp:62) ==3609== by 0x84D5F6: global constructors keyed to opt.cpp (opt.cpp:831) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 26 bytes in 1 blocks are possibly lost in loss record 107 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9DDA9: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9DF6B: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x856E61: void llvm::cl::opt_storage<std::string, false, true>::setValue<char [2]>(char const (&) [2], bool) (CommandLine.h:1070) ==3609== by 0x854129: std::string& llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::operator=<char [2]>(char const (&) [2]) (CommandLine.h:1166) ==3609== by 0x84A1AB: main (opt.cpp:613) ==3609===3609== 26 bytes in 1 blocks are possibly lost in loss record 108 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x143030A: llvm::tool_output_file::CleanupInstaller::CleanupInstaller(char const*) (ToolOutputFile.cpp:19) ==3609== by 0x14304A0: llvm::tool_output_file::tool_output_file(char const*, std::string&, unsigned int) (ToolOutputFile.cpp:39) ==3609== by 0x84A1F0: main (opt.cpp:617) ==3609===3609== 29 bytes in 1 blocks are possibly lost in loss record 151 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0xC0722A: void llvm::cl::initializer<char [5]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string>> >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&)const (CommandLine.h:290) ==3609== by 0xC071A3: void llvm::cl::applicator<llvm::cl::initializer<char [5]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [5]> const&, llvm::cl::opt<std::string, false,llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0xC06FB6: void llvm::cl::apply<llvm::cl::initializer<char [5]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [5]> const&, llvm::cl::opt<std::string, false,llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0xC06BEE: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [24], llvm::cl::desc, llvm::cl::initializer<char [5]>, llvm::cl::OptionHidden>(char const (&) [24], llvm::cl::desc const&, llvm::cl::initializer<char [5]> const&, llvm::cl::OptionHidden const&) (CommandLine.h:1195) ==3609== by 0xC06492: __static_initialization_and_destruction_0(int, int) (PostRASchedulerList.cpp:66) ==3609== by 0xC06624: global constructors keyed to PostRASchedulerList.cpp (PostRASchedulerList.cpp:776) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 29 bytes in 1 blocks are possibly lost in loss record 152 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0xC0722A: void llvm::cl::initializer<char [5]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string>> >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&)const (CommandLine.h:290) ==3609== by 0xC071A3: void llvm::cl::applicator<llvm::cl::initializer<char [5]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [5]> const&, llvm::cl::opt<std::string, false,llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0xC06FB6: void llvm::cl::apply<llvm::cl::initializer<char [5]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [5]> const&, llvm::cl::opt<std::string, false,llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0xFBEDA9: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [21], llvm::cl::initializer<char [5]>, llvm::cl::OptionHidden, llvm::cl::ValueExpected>(char const (&) [21], llvm::cl::initializer<char [5]> const&, llvm::cl::OptionHidden const&, llvm::cl::ValueExpected const&) (CommandLine.h:1195) ==3609== by 0xFBEB5D: __static_initialization_and_destruction_0(int, int) (GCOVProfiling.cpp:46) ==3609== by 0xFBEBF4: global constructors keyed to GCOVProfiling.cpp (GCOVProfiling.cpp:855) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 32 bytes in 1 blocks are possibly lost in loss record 199 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x139B32C: llvm::Module::Module(llvm::StringRef, llvm::LLVMContext&) (Module.cpp:46) ==3609== by 0x12926C1: llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3038) ==3609== by 0x12928B5: llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3078) ==3609== by 0x123674D: llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:67) ==3609== by 0x1236A0F: llvm::ParseIRFile(std::string const&, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:88) ==3609== by 0x84A036: main (opt.cpp:593) ==3609===3609== 37 bytes in 1 blocks are possibly lost in loss record 219 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x1132DB0: void llvm::cl::initializer<char [13]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const (CommandLine.h:290) ==3609== by 0x11317C9: void llvm::cl::applicator<llvm::cl::initializer<char [13]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [13]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0x1130EB8: void llvm::cl::apply<llvm::cl::initializer<char [13]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [13]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0x11307F9: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [25], llvm::cl::initializer<char [13]>, llvm::cl::value_desc, llvm::cl::desc, llvm::cl::OptionHidden>(char const (&) [25], llvm::cl::initializer<char [13]> const&, llvm::cl::value_desc const&, llvm::cl::desc const&, llvm::cl::OptionHidden const&) (CommandLine.h:1202) ==3609== by 0x1130663: __static_initialization_and_destruction_0(int, int) (PathProfileInfo.cpp:32) ==3609== by 0x113070E: global constructors keyed to PathProfileInfo.cpp (PathProfileInfo.cpp:433) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 37 bytes in 1 blocks are possibly lost in loss record 220 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x1132DB0: void llvm::cl::initializer<char [13]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const (CommandLine.h:290) ==3609== by 0x11317C9: void llvm::cl::applicator<llvm::cl::initializer<char [13]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [13]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0x1130EB8: void llvm::cl::apply<llvm::cl::initializer<char [13]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [13]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0x115B6F9: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [18], llvm::cl::initializer<char [13]>, llvm::cl::value_desc, llvm::cl::desc>(char const (&) [18], llvm::cl::initializer<char [13]> const&, llvm::cl::value_desc const&, llvm::cl::desc const&) (CommandLine.h:1195) ==3609== by 0x115B4D9: __static_initialization_and_destruction_0(int, int) (ProfileInfoLoaderPass.cpp:37) ==3609== by 0x115B5B6: global constructors keyed to ProfileInfoLoaderPass.cpp (ProfileInfoLoaderPass.cpp:267) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 37 bytes in 1 blocks are possibly lost in loss record 221 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x1132DB0: void llvm::cl::initializer<char [13]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const (CommandLine.h:290) ==3609== by 0x11317C9: void llvm::cl::applicator<llvm::cl::initializer<char [13]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [13]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0x1130EB8: void llvm::cl::apply<llvm::cl::initializer<char [13]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [13]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0x113C091: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [13], llvm::cl::initializer<char [13]>, llvm::cl::value_desc, llvm::cl::desc>(char const (&) [13], llvm::cl::initializer<char [13]> const&, llvm::cl::value_desc const&, llvm::cl::desc const&) (CommandLine.h:1195) ==3609== by 0x113BE9D: __static_initialization_and_destruction_0(int, int) (ProfileDataLoaderPass.cpp:42) ==3609== by 0x113BF44: global constructors keyed to ProfileDataLoaderPass.cpp (ProfileDataLoaderPass.cpp:188) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 43 bytes in 1 blocks are possibly lost in loss record 240 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0xBFEB42: void llvm::cl::initializer<char [19]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const (CommandLine.h:290) ==3609== by 0xBFE447: void llvm::cl::applicator<llvm::cl::initializer<char [19]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [19]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0xBFDDBD: void llvm::cl::apply<llvm::cl::initializer<char [19]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [19]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0xBFD782: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [20], llvm::cl::ValueExpected, llvm::cl::desc, llvm::cl::value_desc, llvm::cl::initializer<char [19]>>(char const (&) [20], llvm::cl::ValueExpected const&, llvm::cl::descconst&, llvm::cl::value_desc const&, llvm::cl::initializer<char [19]> const&) (CommandLine.h:1203) ==3609== by 0xBFCC53: __static_initialization_and_destruction_0(int, int) (Passes.cpp:86) ==3609== by 0xBFCD8F: global constructors keyed to Passes.cpp (Passes.cpp:760) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 49 bytes in 1 blocks are possibly lost in loss record 249 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x84F356: llvm::Module::setTargetTriple(llvm::StringRef) (Module.h:265) ==3609== by 0x128AD61: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1613) ==3609== by 0x128C026: llvm::BitcodeReader::ParseBitcodeInto(llvm::Module*) (BitcodeReader.cpp:1826) ==3609== by 0x1292712: llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3041) ==3609== by 0x12928B5: llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3078) ==3609== by 0x123674D: llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:67) ==3609===3609== 49 bytes in 1 blocks are possibly lost in loss record 250 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x11CB6F6: llvm::TargetMachine::TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&) (TargetMachine.cpp:58) ==3609== by 0xB960AF: llvm::LLVMTargetMachine::LLVMTargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) (LLVMTargetMachine.cpp:70) ==3609== by 0x861341: llvm::X86TargetMachine::X86TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level, bool) (X86TargetMachine.cpp:85) ==3609== by 0x86119B: llvm::X86_64TargetMachine::X86_64TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) (X86TargetMachine.cpp:71) ==3609== by 0x863564: llvm::RegisterTargetMachine<llvm::X86_64TargetMachine>::Allocator(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) (TargetRegistry.h:1015) ==3609== by 0x84FA5E: llvm::Target::createTargetMachine(llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) const (TargetRegistry.h:340) ==3609===3609== 49 bytes in 1 blocks are possibly lost in loss record 251 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x8613AE: llvm::X86TargetMachine::X86TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level, bool) (X86TargetMachine.cpp:85) ==3609== by 0x86119B: llvm::X86_64TargetMachine::X86_64TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) (X86TargetMachine.cpp:71) ==3609== by 0x863564: llvm::RegisterTargetMachine<llvm::X86_64TargetMachine>::Allocator(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) (TargetRegistry.h:1015) ==3609== by 0x84FA5E: llvm::Target::createTargetMachine(llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) const (TargetRegistry.h:340) ==3609== by 0x849E3C: GetTargetMachine(llvm::Triple) (opt.cpp:548) ==3609== by 0x84A553: main (opt.cpp:658) ==3609===3609== 49 bytes in 1 blocks are possibly lost in loss record 252 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x1220A16: llvm::MCSubtargetInfo::InitMCSubtargetInfo(llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::SubtargetFeatureKV const*, llvm::SubtargetFeatureKV const*, llvm::SubtargetInfoKV const*, llvm::MCWriteProcResEntry const*, llvm::MCWriteLatencyEntry const*, llvm::MCReadAdvanceEntry const*, llvm::InstrStage const*, unsigned int const*, unsigned int const*, unsigned int, unsigned int) (MCSubtargetInfo.cpp:48) ==3609== by 0x956879: llvm::X86GenSubtargetInfo::X86GenSubtargetInfo(llvm::StringRef, llvm::StringRef, llvm::StringRef) (X86GenSubtargetInfo.inc:2102) ==3609== by 0x957FBD: llvm::X86Subtarget::X86Subtarget(std::string const&, std::string const&, std::string const&, unsigned int, bool) (X86Subtarget.cpp:483) ==3609== by 0x8613D6: llvm::X86TargetMachine::X86TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level, bool) (X86TargetMachine.cpp:85) ==3609== by 0x86119B: llvm::X86_64TargetMachine::X86_64TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) (X86TargetMachine.cpp:71) ==3609== by 0x863564: llvm::RegisterTargetMachine<llvm::X86_64TargetMachine>::Allocator(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&, llvm::Reloc::Model, llvm::CodeModel::Model, llvm::CodeGenOpt::Level) (TargetRegistry.h:1015) ==3609===3609== 50 bytes in 1 blocks are possibly lost in loss record 253 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF32: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x1138894: void llvm::cl::initializer<char [26]>::apply<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >&) const (CommandLine.h:290) ==3609== by 0x1137382: void llvm::cl::applicator<llvm::cl::initializer<char [26]>>::opt<llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> > >(llvm::cl::initializer<char [26]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >&) (CommandLine.h:974) ==3609== by 0x1136AF0: void llvm::cl::apply<llvm::cl::initializer<char [26]>, llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >>(llvm::cl::initializer<char [26]> const&, llvm::cl::opt<std::string,false, llvm::cl::parser<std::string> >*) (CommandLine.h:1012) ==3609== by 0x1136347: llvm::cl::opt<std::string, false, llvm::cl::parser<std::string> >::opt<char [27], llvm::cl::initializer<char [26]>, llvm::cl::value_desc, llvm::cl::desc, llvm::cl::OptionHidden>(char const (&) [27], llvm::cl::initializer<char [26]> const&, llvm::cl::value_desc const&, llvm::cl::desc const&, llvm::cl::OptionHidden const&) (CommandLine.h:1202) ==3609== by 0x1136183: __static_initialization_and_destruction_0(int, int) (PathProfileVerifier.cpp:54) ==3609== by 0x113621E: global constructors keyed to PathProfileVerifier.cpp (PathProfileVerifier.cpp:206) ==3609== by 0x1443675: ??? (in /usr/local/bin/opt) ==3609== by 0x83C282: ??? (in /usr/local/bin/opt) ==3609===3609== 69 bytes in 1 blocks are possibly lost in loss record 435 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84EC42: llvm::cl::parser<std::string>::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, std::string&) (CommandLine.h:878) ==3609== by 0x85D961: llvm::cl::opt<llvm::PluginLoader, false, llvm::cl::parser<std::string> >::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef) (CommandLine.h:1127) ==3609== by 0x13EFAE6: llvm::cl::Option::addOccurrence(unsigned int, llvm::StringRef, llvm::StringRef, bool) (CommandLine.cpp:883) ==3609== by 0x13ED212: CommaSeparateAndAddOccurence(llvm::cl::Option*, unsigned int, llvm::StringRef, llvm::StringRef, bool) (CommandLine.cpp:259) ==3609== by 0x13ED4EC: ProvideOption(llvm::cl::Option*, llvm::StringRef, llvm::StringRef, int, char const* const*, int&) (CommandLine.cpp:299) ==3609== by 0x13EEFCA: llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*) (CommandLine.cpp:724) ==3609== by 0x849F96: main (opt.cpp:582) ==3609===3609== 170 bytes in 1 blocks are possibly lost in loss record 461 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x125522A: llvm::Module::setDataLayout(llvm::StringRef) (Module.h:262) ==3609== by 0x128AE35: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1620) ==3609== by 0x128C026: llvm::BitcodeReader::ParseBitcodeInto(llvm::Module*) (BitcodeReader.cpp:1826) ==3609== by 0x1292712: llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3041) ==3609== by 0x12928B5: llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3078) ==3609== by 0x123674D: llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:67) ==3609===3609== 208 bytes in 7 blocks are possibly lost in loss record 467 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x12B9552: llvm::StringAttributeEntry::StringAttributeEntry(llvm::StringRef, llvm::StringRef) (AttributeImpl.h:87) ==3609== by 0x12B56C0: llvm::AttributeImpl::AttributeImpl(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:288) ==3609== by 0x12B4048: llvm::Attribute::get(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:68) ==3609== by 0x12B6BA4: llvm::AttributeSet::get(llvm::LLVMContext&, unsigned int, llvm::AttrBuilder&) (Attributes.cpp:619) ==3609== by 0x12856AC: llvm::BitcodeReader::ParseAttributeGroupBlock() (BitcodeReader.cpp:577) ==3609== by 0x128A9D0: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1534) ==3609===3609== 302 bytes in 7 blocks are possibly lost in loss record 471 of 535 ==3609== at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298) ==3609== by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x33B2A9CF6A: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13) ==3609== by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183) ==3609== by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200) ==3609== by 0x12B953B: llvm::StringAttributeEntry::StringAttributeEntry(llvm::StringRef, llvm::StringRef) (AttributeImpl.h:87) ==3609== by 0x12B56C0: llvm::AttributeImpl::AttributeImpl(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:288) ==3609== by 0x12B4048: llvm::Attribute::get(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:68) ==3609== by 0x12B6BA4: llvm::AttributeSet::get(llvm::LLVMContext&, unsigned int, llvm::AttrBuilder&) (Attributes.cpp:619) ==3609== by 0x12856AC: llvm::BitcodeReader::ParseAttributeGroupBlock() (BitcodeReader.cpp:577) ==3609== by 0x128A9D0: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1534) ==3609===3609== LEAK SUMMARY: ==3609== definitely lost: 0 bytes in 0 blocks ==3609== indirectly lost: 0 bytes in 0 blocks ==3609== possibly lost: 1,317 bytes in 31 blocks ==3609== still reachable: 199,418 bytes in 543 blocks ==3609== suppressed: 0 bytes in 0 blocks ==3609== Reachable blocks (those to which a pointer was found) are not shown. ==3609== To see them, rerun with: --leak-check=full --show-reachable=yes ==3609===3609== For counts of detected and suppressed errors, rerun with: -v ==3609== ERROR SUMMARY: 19 errors from 19 contexts (suppressed: 6 from 6) There seems no invalid memory access. Do you think that maybe the error is based on not the latest llvm version? or is it a llvm bug? thanks.> Nick > > > 0 opt 0x00000000014190b6 >> llvm::sys::PrintStackTrace(_**IO_FILE*) + 38 >> 1 opt 0x0000000001419333 >> 2 opt 0x0000000001418d8b >> 3 libpthread.so.0 0x0000003aa600f500 >> 4 libc.so.6 0x0000003aa5c328a5 gsignal + 53 >> 5 libc.so.6 0x0000003aa5c34085 abort + 373 >> 6 opt 0x000000000140089b >> 7 LLVMHello.so 0x00007f889beb5833 >> 8 LLVMHello.so 0x00007f889beb57bd >> 9 LLVMHello.so 0x00007f889beb575e >> 10 LLVMHello.so 0x00007f889beb56c5 >> 11 LLVMHello.so 0x00007f889beb55f2 >> 12 LLVMHello.so 0x00007f889beb5401 >> 13 opt 0x00000000013a4e21 >> llvm::FPPassManager::**runOnFunction(llvm::Function&) + 393 >> 14 opt 0x00000000013a5021 >> llvm::FPPassManager::**runOnModule(llvm::Module&) + 89 >> 15 opt 0x00000000013a5399 >> llvm::MPPassManager::**runOnModule(llvm::Module&) + 573 >> 16 opt 0x00000000013a59a8 >> llvm::PassManagerImpl::run(**llvm::Module&) + 254 >> 17 opt 0x00000000013a5bbf >> llvm::PassManager::run(llvm::**Module&) + 39 >> 18 opt 0x000000000084b455 main + 5591 >> 19 libc.so.6 0x0000003aa5c1ecdd __libc_start_main + 253 >> 20 opt 0x000000000083d359 >> Stack dump: >> 0. Program arguments: opt -load >> ../build_llvm/Debug+Asserts/**lib/LLVMHello.so -hello >> 1. Running pass 'Function Pass Manager' on module '<stdin>'. >> 2. Running pass 'Hello Pass' on function '@main' >> >> I will illustrate the pass code, the test1 example, and the IR generated >> below, so that anyone could help me or give me some suggestion. Thanks. >> >> The Hello.cpp pass is as the following: >> >> #define DEBUG_TYPE"hello" >> #include"llvm/Pass.h" >> #include"llvm/IR/Module.h" >> #include"llvm/InstVisitor.h" >> #include"llvm/IR/Constants.h" >> #include"llvm/IR/IRBuilder.h" >> #include"llvm/Support/raw_**ostream.h" >> namespace { >> >> struct Hello : public llvm::FunctionPass, llvm::InstVisitor<Hello> { >> private: >> llvm::BasicBlock *FailBB; >> public: >> static char ID; >> Hello() : llvm::FunctionPass(ID) {FailBB = 0;} >> >> >> virtual bool runOnFunction(llvm::Function&**F) { >> >> visit(F); >> return false; >> } >> >> llvm::BasicBlock *getTrapBB(llvm::Instruction&**Inst) { >> >> if (FailBB) return FailBB; >> llvm::Function *Fn = Inst.getParent()->getParent(); >> >> llvm::LLVMContext& ctx = Fn->getContext(); >> llvm::IRBuilder<> builder(ctx); >> > > You don't seem to ever use this builder? > > >> FailBB = llvm::BasicBlock::Create(ctx,"**FailBlock", Fn); >> llvm::ReturnInst::Create(Fn->**getContext(), FailBB); >> return FailBB; >> >> } >> void visitLoadInst(llvm::LoadInst& LI) { >> } >> >> void visitStoreInst(llvm::**StoreInst& SI) { >> >> llvm::Value * Addr = SI.getOperand(1); >> llvm::PointerType* PTy = llvm::cast<llvm::PointerType>(** >> Addr->getType()); >> llvm::Type * ElTy = PTy -> getElementType(); >> if (!ElTy->isPointerTy()) { >> llvm::BasicBlock *OldBB = SI.getParent(); >> llvm::errs()<< "yes, got it \n"; >> llvm::ICmpInst *Cmp = new llvm::ICmpInst(&SI, >> llvm::CmpInst::ICMP_EQ, Addr, llvm::Constant::getNullValue(** >> Addr->getType()),""); >> >> llvm::Instruction *Iter =&SI; >> OldBB->getParent()->dump(); >> llvm::BasicBlock *NewBB = OldBB->splitBasicBlock(Iter,"** >> newBlock"); >> OldBB->getParent()->dump(); >> >> } >> >> } >> }; >> >> char Hello::ID = 0; >> static llvm::RegisterPass<Hello> X("hello","Hello Pass", false, >> false); >> } >> >> The test1.c example is as the following: >> >> #include<stdio.h> >> void main() { >> int x; >> x = 5; >> } >> >> The IR for the example after adding the pass is as the following: >> define void @main() #0 { >> entry: >> %x = alloca i32, align 4 >> %0 = icmp eq i32* %x, null >> br label %newBlock >> >> newBlock: ; preds = %entry >> store i32 5, i32* %x, align 4 >> ret void >> } >> >> >> any suggestion? >> >> >> ______________________________**_________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/**mailman/listinfo/llvmdev<http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> >> > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130706/83067b99/attachment.html>