<div dir="ltr">Hi Nick,<br><div class="gmail_extra"><br><br><div class="gmail_quote">2013/7/6 Nick Lewycky <span dir="ltr"><<a href="mailto:nicholas@mxc.ca" target="_blank">nicholas@mxc.ca</a>></span><br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="im">hacker cling wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Hello all,<br>
     I was playing with LLVM pass. I changed the<br>
lib/Transforms/Hello/Hello.cpp 's content to be my own pass. Then I make<br>
install the pass and use an example test1.c to see whether it works or<br>
not. When I run example using  the following command:<br>
clang -emit-llvm test1.c -c -o test1.bc<br>
opt -load ../build_llvm/Debug+Asserts/<u></u>lib/LLVMHello.so -hello < test1.bc<br>
 > /dev/null<br>
<br>
It shows the following error:<br>
<br>
Unknown instruction type encountered!<br>
UNREACHABLE executed at include/llvm/InstVisitor.h:<u></u>120!<br>
</blockquote>
<br></div>
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 <a href="http://llvm.org/docs/LangRef.html" target="_blank">llvm.org/docs/LangRef.html</a> .<br>

<br>
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?<br>

<br></blockquote><div> </div><div> I am sure that the version of llvm and opt are the same since I build them at the same time.<br><br>opt -version<br>LLVM (<a href="http://llvm.org/">http://llvm.org/</a>):<br>LLVM version 3.3svn<br>
DEBUG build with assertions.<br>Built Jun 12 2013 (19:47:01).<br>Default target: x86_64-unknown-linux-gnu<br>Host CPU: penryn<br><br>clang -v<br>clang version 3.3 (trunk 179269)<br>Target: x86_64-unknown-linux-gnu<br>Thread model: posix<br>
<br></div><div>They are both based on the trunk 179269. (Currently I am working on Cling(<a href="http://root.cern.ch/drupal/content/cling">http://root.cern.ch/drupal/content/cling</a>), which is based on LLVM and clang with the version 179269).<br>
<br></div><div>I use opt -verify < test1.bc -f <br></div><div>There is no error output.<br><br></div><div>I also use  opt -verify -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello < test1.bc -f<br><br></div>
<div>There is still no other error output except for the "Unknown instruction type encountered!"<br><br><br></div><div><br><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

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?<br>

<br></blockquote><div>I use valgrind to test it:<br><br><br>valgrind --tool=memcheck --leak-check=full opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello < test1.bc > /dev/null<br>==3609== Memcheck, a memory error detector<br>
==3609== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.<br>==3609== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info<br>==3609== Command: opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello<br>
==3609== <br><br><br><br>define void @main() #0 {<br>entry:<br>  %x = alloca i32, align 4<br>  %0 = icmp eq i32* %x, null<br>  br label %newBlock<br><br>newBlock:                                         ; preds = %entry<br>
  store i32 5, i32* %x, align 4<br>  ret void<br>}<br><br>Unknown instruction type encountered!<br>UNREACHABLE executed at /home/sploving/llvm/include/llvm/InstVisitor.h:120!<br>0  opt             0x00000000014190b6 llvm::sys::PrintStackTrace(_IO_FILE*) + 38<br>
1  opt             0x0000000001419333<br>2  opt             0x0000000001418d8b<br>3  libpthread.so.0 0x0000003aa600f500<br>4  libc.so.6       0x0000003aa5c328a5 gsignal + 53<br>5  libc.so.6       0x0000003aa5c34085 abort + 373<br>
6  opt             0x000000000140089b<br>7  LLVMHello.so    0x00000000050278b3<br>8  LLVMHello.so    0x000000000502783d<br>9  LLVMHello.so    0x00000000050277de<br>10 LLVMHello.so    0x0000000005027745<br>11 LLVMHello.so    0x0000000005027672<br>
12 LLVMHello.so    0x000000000502746d<br>13 opt             0x00000000013a4e21 llvm::FPPassManager::runOnFunction(llvm::Function&) + 393<br>14 opt             0x00000000013a5021 llvm::FPPassManager::runOnModule(llvm::Module&) + 89<br>
15 opt             0x00000000013a5399 llvm::MPPassManager::runOnModule(llvm::Module&) + 573<br>16 opt             0x00000000013a59a8 llvm::PassManagerImpl::run(llvm::Module&) + 254<br>17 opt             0x00000000013a5bbf llvm::PassManager::run(llvm::Module&) + 39<br>
18 opt             0x000000000084b455 main + 5591<br>19 libc.so.6       0x0000003aa5c1ecdd __libc_start_main + 253<br>20 opt             0x000000000083d359<br>Stack dump:<br>0.    Program arguments: opt -load ../build_llvm/Debug+Asserts/lib/LLVMHello.so -hello <br>
1.    Running pass 'Function Pass Manager' on module '<stdin>'.<br>2.    Running pass 'Hello Pass' on function '@main'<br>==3609== <br>==3609== HEAP SUMMARY:<br>==3609==     in use at exit: 200,735 bytes in 574 blocks<br>
==3609==   total heap usage: 2,340 allocs, 1,766 frees, 476,703 bytes allocated<br>==3609== <br>==3609== 26 bytes in 1 blocks are possibly lost in loss record 106 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0x84C9CA: __static_initialization_and_destruction_0(int, int) (opt.cpp:62)<br>==3609==    by 0x84D5F6: global constructors keyed to opt.cpp (opt.cpp:831)<br>==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>
==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 26 bytes in 1 blocks are possibly lost in loss record 107 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9DDA9: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9DF6B: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x856E61: void llvm::cl::opt_storage<std::string, false, true>::setValue<char [2]>(char const (&) [2], bool) (CommandLine.h:1070)<br>
==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)<br>==3609==    by 0x84A1AB: main (opt.cpp:613)<br>
==3609== <br>==3609== 26 bytes in 1 blocks are possibly lost in loss record 108 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==3609==    by 0x143030A: llvm::tool_output_file::CleanupInstaller::CleanupInstaller(char const*) (ToolOutputFile.cpp:19)<br>==3609==    by 0x14304A0: llvm::tool_output_file::tool_output_file(char const*, std::string&, unsigned int) (ToolOutputFile.cpp:39)<br>
==3609==    by 0x84A1F0: main (opt.cpp:617)<br>==3609== <br>==3609== 29 bytes in 1 blocks are possibly lost in loss record 151 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0xC06492: __static_initialization_and_destruction_0(int, int) (PostRASchedulerList.cpp:66)<br>==3609==    by 0xC06624: global constructors keyed to PostRASchedulerList.cpp (PostRASchedulerList.cpp:776)<br>==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>
==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 29 bytes in 1 blocks are possibly lost in loss record 152 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0xFBEB5D: __static_initialization_and_destruction_0(int, int) (GCOVProfiling.cpp:46)<br>==3609==    by 0xFBEBF4: global constructors keyed to GCOVProfiling.cpp (GCOVProfiling.cpp:855)<br>==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>
==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 32 bytes in 1 blocks are possibly lost in loss record 199 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==3609==    by 0x139B32C: llvm::Module::Module(llvm::StringRef, llvm::LLVMContext&) (Module.cpp:46)<br>
==3609==    by 0x12926C1: llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3038)<br>==3609==    by 0x12928B5: llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3078)<br>
==3609==    by 0x123674D: llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:67)<br>==3609==    by 0x1236A0F: llvm::ParseIRFile(std::string const&, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:88)<br>
==3609==    by 0x84A036: main (opt.cpp:593)<br>==3609== <br>==3609== 37 bytes in 1 blocks are possibly lost in loss record 219 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0x1130663: __static_initialization_and_destruction_0(int, int) (PathProfileInfo.cpp:32)<br>==3609==    by 0x113070E: global constructors keyed to PathProfileInfo.cpp (PathProfileInfo.cpp:433)<br>==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>
==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 37 bytes in 1 blocks are possibly lost in loss record 220 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0x115B4D9: __static_initialization_and_destruction_0(int, int) (ProfileInfoLoaderPass.cpp:37)<br>==3609==    by 0x115B5B6: global constructors keyed to ProfileInfoLoaderPass.cpp (ProfileInfoLoaderPass.cpp:267)<br>
==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 37 bytes in 1 blocks are possibly lost in loss record 221 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0x113BE9D: __static_initialization_and_destruction_0(int, int) (ProfileDataLoaderPass.cpp:42)<br>==3609==    by 0x113BF44: global constructors keyed to ProfileDataLoaderPass.cpp (ProfileDataLoaderPass.cpp:188)<br>
==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 43 bytes in 1 blocks are possibly lost in loss record 240 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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::desc const&, llvm::cl::value_desc const&, llvm::cl::initializer<char [19]> const&) (CommandLine.h:1203)<br>
==3609==    by 0xBFCC53: __static_initialization_and_destruction_0(int, int) (Passes.cpp:86)<br>==3609==    by 0xBFCD8F: global constructors keyed to Passes.cpp (Passes.cpp:760)<br>==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>
==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 49 bytes in 1 blocks are possibly lost in loss record 249 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==3609==    by 0x84F356: llvm::Module::setTargetTriple(llvm::StringRef) (Module.h:265)<br>
==3609==    by 0x128AD61: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1613)<br>==3609==    by 0x128C026: llvm::BitcodeReader::ParseBitcodeInto(llvm::Module*) (BitcodeReader.cpp:1826)<br>==3609==    by 0x1292712: llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3041)<br>
==3609==    by 0x12928B5: llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3078)<br>==3609==    by 0x123674D: llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:67)<br>
==3609== <br>==3609== 49 bytes in 1 blocks are possibly lost in loss record 250 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==3609==    by 0x11CB6F6: llvm::TargetMachine::TargetMachine(llvm::Target const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, llvm::TargetOptions const&) (TargetMachine.cpp:58)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609== <br>==3609== 49 bytes in 1 blocks are possibly lost in loss record 251 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0x849E3C: GetTargetMachine(llvm::Triple) (opt.cpp:548)<br>==3609==    by 0x84A553: main (opt.cpp:658)<br>==3609== <br>==3609== 49 bytes in 1 blocks are possibly lost in loss record 252 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==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)<br>
==3609==    by 0x956879: llvm::X86GenSubtargetInfo::X86GenSubtargetInfo(llvm::StringRef, llvm::StringRef, llvm::StringRef) (X86GenSubtargetInfo.inc:2102)<br>==3609==    by 0x957FBD: llvm::X86Subtarget::X86Subtarget(std::string const&, std::string const&, std::string const&, unsigned int, bool) (X86Subtarget.cpp:483)<br>
==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)<br>
==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)<br>
==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)<br>
==3609== <br>==3609== 50 bytes in 1 blocks are possibly lost in loss record 253 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==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)<br>
==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)<br>
==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)<br>
==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)<br>
==3609==    by 0x1136183: __static_initialization_and_destruction_0(int, int) (PathProfileVerifier.cpp:54)<br>==3609==    by 0x113621E: global constructors keyed to PathProfileVerifier.cpp (PathProfileVerifier.cpp:206)<br>
==3609==    by 0x1443675: ??? (in /usr/local/bin/opt)<br>==3609==    by 0x83C282: ??? (in /usr/local/bin/opt)<br>==3609== <br>==3609== 69 bytes in 1 blocks are possibly lost in loss record 435 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84EC42: llvm::cl::parser<std::string>::parse(llvm::cl::Option&, llvm::StringRef, llvm::StringRef, std::string&) (CommandLine.h:878)<br>
==3609==    by 0x85D961: llvm::cl::opt<llvm::PluginLoader, false, llvm::cl::parser<std::string> >::handleOccurrence(unsigned int, llvm::StringRef, llvm::StringRef) (CommandLine.h:1127)<br>==3609==    by 0x13EFAE6: llvm::cl::Option::addOccurrence(unsigned int, llvm::StringRef, llvm::StringRef, bool) (CommandLine.cpp:883)<br>
==3609==    by 0x13ED212: CommaSeparateAndAddOccurence(llvm::cl::Option*, unsigned int, llvm::StringRef, llvm::StringRef, bool) (CommandLine.cpp:259)<br>==3609==    by 0x13ED4EC: ProvideOption(llvm::cl::Option*, llvm::StringRef, llvm::StringRef, int, char const* const*, int&) (CommandLine.cpp:299)<br>
==3609==    by 0x13EEFCA: llvm::cl::ParseCommandLineOptions(int, char const* const*, char const*) (CommandLine.cpp:724)<br>==3609==    by 0x849F96: main (opt.cpp:582)<br>==3609== <br>==3609== 170 bytes in 1 blocks are possibly lost in loss record 461 of 535<br>
==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==3609==    by 0x125522A: llvm::Module::setDataLayout(llvm::StringRef) (Module.h:262)<br>
==3609==    by 0x128AE35: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1620)<br>==3609==    by 0x128C026: llvm::BitcodeReader::ParseBitcodeInto(llvm::Module*) (BitcodeReader.cpp:1826)<br>==3609==    by 0x1292712: llvm::getLazyBitcodeModule(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3041)<br>
==3609==    by 0x12928B5: llvm::ParseBitcodeFile(llvm::MemoryBuffer*, llvm::LLVMContext&, std::string*) (BitcodeReader.cpp:3078)<br>==3609==    by 0x123674D: llvm::ParseIR(llvm::MemoryBuffer*, llvm::SMDiagnostic&, llvm::LLVMContext&) (IRReader.cpp:67)<br>
==3609== <br>==3609== 208 bytes in 7 blocks are possibly lost in loss record 467 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>
==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==3609==    by 0x12B9552: llvm::StringAttributeEntry::StringAttributeEntry(llvm::StringRef, llvm::StringRef) (AttributeImpl.h:87)<br>
==3609==    by 0x12B56C0: llvm::AttributeImpl::AttributeImpl(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:288)<br>==3609==    by 0x12B4048: llvm::Attribute::get(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:68)<br>
==3609==    by 0x12B6BA4: llvm::AttributeSet::get(llvm::LLVMContext&, unsigned int, llvm::AttrBuilder&) (Attributes.cpp:619)<br>==3609==    by 0x12856AC: llvm::BitcodeReader::ParseAttributeGroupBlock() (BitcodeReader.cpp:577)<br>
==3609==    by 0x128A9D0: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1534)<br>==3609== <br>==3609== 302 bytes in 7 blocks are possibly lost in loss record 471 of 535<br>==3609==    at 0x4A075BC: operator new(unsigned long) (vg_replace_malloc.c:298)<br>
==3609==    by 0x33B2A9C3C8: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib64/libstdc++.so.6.0.13)<br>==3609==    by 0x33B2A9CDE4: ??? (in /usr/lib64/libstdc++.so.6.0.13)<br>
==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)<br>
==3609==    by 0x84D7CF: llvm::StringRef::str() const (StringRef.h:183)<br>==3609==    by 0x84D80D: llvm::StringRef::operator std::string() const (StringRef.h:200)<br>==3609==    by 0x12B953B: llvm::StringAttributeEntry::StringAttributeEntry(llvm::StringRef, llvm::StringRef) (AttributeImpl.h:87)<br>
==3609==    by 0x12B56C0: llvm::AttributeImpl::AttributeImpl(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:288)<br>==3609==    by 0x12B4048: llvm::Attribute::get(llvm::LLVMContext&, llvm::StringRef, llvm::StringRef) (Attributes.cpp:68)<br>
==3609==    by 0x12B6BA4: llvm::AttributeSet::get(llvm::LLVMContext&, unsigned int, llvm::AttrBuilder&) (Attributes.cpp:619)<br>==3609==    by 0x12856AC: llvm::BitcodeReader::ParseAttributeGroupBlock() (BitcodeReader.cpp:577)<br>
==3609==    by 0x128A9D0: llvm::BitcodeReader::ParseModule(bool) (BitcodeReader.cpp:1534)<br>==3609== <br>==3609== LEAK SUMMARY:<br>==3609==    definitely lost: 0 bytes in 0 blocks<br>==3609==    indirectly lost: 0 bytes in 0 blocks<br>
==3609==      possibly lost: 1,317 bytes in 31 blocks<br>==3609==    still reachable: 199,418 bytes in 543 blocks<br>==3609==         suppressed: 0 bytes in 0 blocks<br>==3609== Reachable blocks (those to which a pointer was found) are not shown.<br>
==3609== To see them, rerun with: --leak-check=full --show-reachable=yes<br>==3609== <br>==3609== For counts of detected and suppressed errors, rerun with: -v<br>==3609== ERROR SUMMARY: 19 errors from 19 contexts (suppressed: 6 from 6)<br>
<br><br></div><div>There seems no invalid memory access. <br><br></div><div>Do you think that maybe the error is based on not the latest llvm version? or is it a llvm bug? thanks.<br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

Nick<div><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
0  opt             0x00000000014190b6<br>
llvm::sys::PrintStackTrace(_<u></u>IO_FILE*) + 38<br>
1  opt             0x0000000001419333<br>
2  opt             0x0000000001418d8b<br>
3  libpthread.so.0 0x0000003aa600f500<br>
4  libc.so.6       0x0000003aa5c328a5 gsignal + 53<br>
5  libc.so.6       0x0000003aa5c34085 abort + 373<br>
6  opt             0x000000000140089b<br>
7  LLVMHello.so    0x00007f889beb5833<br>
8  LLVMHello.so    0x00007f889beb57bd<br>
9  LLVMHello.so    0x00007f889beb575e<br>
10 LLVMHello.so    0x00007f889beb56c5<br>
11 LLVMHello.so    0x00007f889beb55f2<br>
12 LLVMHello.so    0x00007f889beb5401<br>
13 opt             0x00000000013a4e21<br>
llvm::FPPassManager::<u></u>runOnFunction(llvm::Function&) + 393<br>
14 opt             0x00000000013a5021<br>
llvm::FPPassManager::<u></u>runOnModule(llvm::Module&) + 89<br>
15 opt             0x00000000013a5399<br>
llvm::MPPassManager::<u></u>runOnModule(llvm::Module&) + 573<br>
16 opt             0x00000000013a59a8<br>
llvm::PassManagerImpl::run(<u></u>llvm::Module&) + 254<br>
17 opt             0x00000000013a5bbf<br>
llvm::PassManager::run(llvm::<u></u>Module&) + 39<br>
18 opt             0x000000000084b455 main + 5591<br>
19 libc.so.6       0x0000003aa5c1ecdd __libc_start_main + 253<br>
20 opt             0x000000000083d359<br>
Stack dump:<br>
0.    Program arguments: opt -load<br>
../build_llvm/Debug+Asserts/<u></u>lib/LLVMHello.so -hello<br>
1.    Running pass 'Function Pass Manager' on module '<stdin>'.<br>
2.    Running pass 'Hello Pass' on function '@main'<br>
<br>
I will illustrate the pass code, the test1 example, and the IR generated<br>
below, so that anyone could help me or give me some suggestion. Thanks.<br>
<br>
The Hello.cpp pass is as the following:<br>
<br>
#define DEBUG_TYPE"hello"<br>
#include"llvm/Pass.h"<br>
#include"llvm/IR/Module.h"<br>
#include"llvm/InstVisitor.h"<br>
#include"llvm/IR/Constants.h"<br>
#include"llvm/IR/IRBuilder.h"<br>
#include"llvm/Support/raw_<u></u>ostream.h"<br>
namespace {<br>
<br>
   struct Hello : public llvm::FunctionPass, llvm::InstVisitor<Hello>  {<br>
   private:<br>
     llvm::BasicBlock *FailBB;<br>
   public:<br>
     static char ID;<br>
    Hello() : llvm::FunctionPass(ID) {FailBB = 0;}<br>
<br>
<br>
     virtual bool runOnFunction(llvm::Function&<u></u>F) {<br>
<br>
       visit(F);<br>
       return false;<br>
     }<br>
<br>
     llvm::BasicBlock *getTrapBB(llvm::Instruction&<u></u>Inst) {<br>
<br>
       if (FailBB) return FailBB;<br>
       llvm::Function *Fn = Inst.getParent()->getParent();<br>
<br>
       llvm::LLVMContext&  ctx = Fn->getContext();<br>
       llvm::IRBuilder<>  builder(ctx);<br>
</blockquote>
<br></div></div>
You don't seem to ever use this builder?<br>
<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im">
<br>
       FailBB = llvm::BasicBlock::Create(ctx,"<u></u>FailBlock", Fn);<br>
       llvm::ReturnInst::Create(Fn-><u></u>getContext(), FailBB);<br>
       return FailBB;<br>
<br>
     }<br>
     void visitLoadInst(llvm::LoadInst&  LI) {<br>
     }<br>
<br></div>
    void visitStoreInst(llvm::<u></u>StoreInst&  SI) {<div><div class="h5"><br>
      llvm::Value * Addr = SI.getOperand(1);<br>
      llvm::PointerType* PTy = llvm::cast<llvm::PointerType>(<u></u>Addr->getType());<br>
      llvm::Type * ElTy = PTy ->  getElementType();<br>
      if (!ElTy->isPointerTy()) {<br>
        llvm::BasicBlock *OldBB = SI.getParent();<br>
        llvm::errs()<<  "yes, got it \n";<br>
        llvm::ICmpInst *Cmp = new llvm::ICmpInst(&SI, llvm::CmpInst::ICMP_EQ, Addr, llvm::Constant::getNullValue(<u></u>Addr->getType()),"");<br>
<br>
        llvm::Instruction *Iter =&SI;<br>
        OldBB->getParent()->dump();<br>
        llvm::BasicBlock *NewBB = OldBB->splitBasicBlock(Iter,"<u></u>newBlock");<br>
        OldBB->getParent()->dump();<br>
<br>
      }<br>
<br>
     }<br>
   };<br>
<br>
   char Hello::ID = 0;<br>
   static llvm::RegisterPass<Hello>  X("hello","Hello Pass", false, false);<br>
}<br>
<br>
  The test1.c example is as the following:<br>
<br>
#include<stdio.h><br>
void main() {<br>
   int x;<br>
   x = 5;<br>
}<br>
<br>
The IR for the example after adding the pass is as the following:<br>
define void @main() #0 {<br>
entry:<br>
   %x = alloca i32, align 4<br>
   %0 = icmp eq i32* %x, null<br>
   br label %newBlock<br>
<br>
newBlock:                                         ; preds = %entry<br>
   store i32 5, i32* %x, align 4<br>
   ret void<br>
}<br>
<br>
<br>
any suggestion?<br>
<br>
<br></div></div>
______________________________<u></u>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvmdev</a><br>
</blockquote>
<br>
</blockquote></div><br></div></div>