<div dir="ltr">Peter,<div><br></div><div>Msan & Asan complain:</div><div><br></div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/2234">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/2234</a></div><div><br></div><div><div>FAIL: LLVM :: LTO/Resolution/X86/lowertypetests.ll (12663 of 19470)</div><div>******************** TEST 'LLVM :: LTO/Resolution/X86/lowertypetests.ll' FAILED ********************</div><div>Script:</div><div>--</div><div>/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/opt -thinlto-bc -o /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/LTO/Resolution/X86/lowertypetests.ll</div><div>/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/llvm-lto2 -r /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp,f,plx -r /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp,foo,lx -r /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp,foo,plx -o /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp1 /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp</div><div>/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/llvm-nm /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp1.0 | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck --check-prefix=MERGED /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/LTO/Resolution/X86/lowertypetests.ll</div><div>/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/llvm-nm /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/LTO/Resolution/X86/Output/lowertypetests.ll.tmp1.1 | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/LTO/Resolution/X86/lowertypetests.ll</div><div>--</div><div>Exit Code: 77</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>==17627==WARNING: MemorySanitizer: use-of-uninitialized-value</div><div>    #0 0x411a1eb in (anonymous namespace)::LowerTypeTestsModule::lower() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1352:23</div><div>    #1 0x411c1d1 in (anonymous namespace)::LowerTypeTests::runOnModule(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:368:53</div><div>    #2 0x298f81e in runOnModule /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1590:27</div><div>    #3 0x298f81e in llvm::legacy::PassManagerImpl::run(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1693</div><div>    #4 0x2aaa065 in runOldPMPasses /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTOBackend.cpp:191:10</div><div>    #5 0x2aaa065 in (anonymous namespace)::opt(llvm::lto::Config&, llvm::TargetMachine*, unsigned int, llvm::Module&, bool, llvm::ModuleSummaryIndex&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTOBackend.cpp:197</div><div>    #6 0x2aabd7a in llvm::lto::thinBackend(llvm::lto::Config&, unsigned int, std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>, llvm::Module&, llvm::ModuleSummaryIndex&, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTOBackend.cpp:373:8</div><div>    #7 0x2a9ff9b in (anonymous namespace)::InProcessThinBackend::runThinLTOBackendThread(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>, std::__1::function<std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)> (unsigned int, llvm::StringRef)>, unsigned int, llvm::BitcodeModule, llvm::ModuleSummaryIndex&, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const&, std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const&, std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)::{lambda(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>)#1}::operator()(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>) const /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:663:14</div><div>    #8 0x2a9e860 in runThinLTOBackendThread /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:674:14</div><div>    #9 0x2a9e860 in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:704</div><div>    #10 0x2a9e860 in __invoke<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9) &, llvm::BitcodeModule &, llvm::ModuleSummaryIndex &, const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> &, const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > &, const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > &, const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > &, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > &> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/type_traits:4301</div><div>    #11 0x2a9e860 in __apply_functor<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9), std::__1::tuple<llvm::BitcodeModule, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, std::__1::reference_wrapper<const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> >, std::__1::reference_wrapper<const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > >, std::__1::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > >, 0, 1, 2, 3, 4, 5, 6, std::__1::tuple<> > /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/functional:2217</div><div>    #12 0x2a9e860 in operator()<> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/functional:2250</div><div>    #13 0x2a9e860 in __invoke<std::__1::__bind<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9), llvm::BitcodeModule &, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, std::__1::reference_wrapper<const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> >, std::__1::reference_wrapper<const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > >, std::__1::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > > &> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/type_traits:4301</div><div>    #14 0x2a9e860 in __call<std::__1::__bind<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9), llvm::BitcodeModule &, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, std::__1::reference_wrapper<const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> >, std::__1::reference_wrapper<const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > >, std::__1::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > > &> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/__functional_base:359</div><div>    #15 0x2a9e860 in std::__1::__function::__func<std::__1::__bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const&, std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)::{lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const&, std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const&, std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)#1}, llvm::BitcodeModule&, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, llvm::BitcodeModule&<llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const>, llvm::BitcodeModule&<std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const>, llvm::BitcodeModule&<std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const>, llvm::BitcodeModule&<std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const>, llvm::BitcodeModule&<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > >, std::__1::allocator<llvm::BitcodeModule&<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > >, void ()>::operator()() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/functional:1552</div><div>    #16 0x2d46826 in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/future:1997:12</div><div>    #17 0x2d46826 in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/future:2217</div><div>    #18 0x2d46826 in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/ThreadPool.cpp:57</div><div>    #19 0x2d46826 in __invoke<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/ThreadPool.cpp:32:26)> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/type_traits:4301</div><div>    #20 0x2d46826 in __thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, (lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/ThreadPool.cpp:32:26)> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/thread:336</div><div>    #21 0x2d46826 in void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, llvm::ThreadPool::ThreadPool(unsigned int)::$_0> >(void*) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_msan/include/c++/v1/thread:346</div><div>    #22 0x585d8e in __msan::MsanThread::ThreadStart() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/projects/compiler-rt/lib/msan/msan_thread.cc:77</div><div>    #23 0x7fa53d8636b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)</div><div>    #24 0x7fa53d38382c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10682c)</div><div><br></div><div>SUMMARY: MemorySanitizer: use-of-uninitialized-value /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1352:23 in (anonymous namespace)::LowerTypeTestsModule::lower()</div><div>Exiting</div><div><br></div><div>--</div><div><br></div><div>********************</div><div>Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. </div><div>FAIL: LLVM :: Transforms/LowerTypeTests/import.ll (17795 of 19470)</div><div>******************** TEST 'LLVM :: Transforms/LowerTypeTests/import.ll' FAILED ********************</div><div>Script:</div><div>--</div><div>/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/opt -S -lowertypetests -lowertypetests-summary-action=import -lowertypetests-read-summary=/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/Inputs/import.yaml < /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/import.ll | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/import.ll</div><div>--</div><div>Exit Code: 2</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>==7942==WARNING: MemorySanitizer: use-of-uninitialized-value</div><div>    #0 0x3edc9bb in (anonymous namespace)::LowerTypeTestsModule::lower() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1352:23</div><div>    #1 0x3edf5f9 in runForTesting /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1328:69</div><div>    #2 0x3edf5f9 in (anonymous namespace)::LowerTypeTests::runOnModule(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:367</div><div>    #3 0x3c3bfde in runOnModule /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1590:27</div><div>    #4 0x3c3bfde in llvm::legacy::PassManagerImpl::run(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1693</div><div>    #5 0x801a1f in main /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/opt/opt.cpp:731:10</div><div>    #6 0x7f1c5695982f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)</div><div>    #7 0x7634d8 in _start (/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/opt+0x7634d8)</div><div><br></div><div>SUMMARY: MemorySanitizer: use-of-uninitialized-value /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1352:23 in (anonymous namespace)::LowerTypeTestsModule::lower()</div><div>Exiting</div><div>FileCheck error: '-' is empty.</div><div>FileCheck command line:  /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/import.ll</div><div><br></div><div>--</div><div><br></div><div>********************</div><div>Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. </div><div>FAIL: LLVM :: Transforms/LowerTypeTests/import-unsat.ll (17797 of 19470)</div><div>******************** TEST 'LLVM :: Transforms/LowerTypeTests/import-unsat.ll' FAILED ********************</div><div>Script:</div><div>--</div><div>/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/opt -S -lowertypetests -lowertypetests-summary-action=import -lowertypetests-read-summary=/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/Inputs/import-unsat.yaml -lowertypetests-write-summary=/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/Transforms/LowerTypeTests/Output/import-unsat.ll.tmp < /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/import-unsat.ll | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/import-unsat.ll</div><div>/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck --check-prefix=SUMMARY /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/import-unsat.ll < /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/test/Transforms/LowerTypeTests/Output/import-unsat.ll.tmp</div><div>--</div><div>Exit Code: 2</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>==7953==WARNING: MemorySanitizer: use-of-uninitialized-value</div><div>    #0 0x3edc9bb in (anonymous namespace)::LowerTypeTestsModule::lower() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1352:23</div><div>    #1 0x3edf5f9 in runForTesting /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1328:69</div><div>    #2 0x3edf5f9 in (anonymous namespace)::LowerTypeTests::runOnModule(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:367</div><div>    #3 0x3c3bfde in runOnModule /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1590:27</div><div>    #4 0x3c3bfde in llvm::legacy::PassManagerImpl::run(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1693</div><div>    #5 0x801a1f in main /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/opt/opt.cpp:731:10</div><div>    #6 0x7fcac693d82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)</div><div>    #7 0x7634d8 in _start (/mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/bin/opt+0x7634d8)</div><div><br></div><div>SUMMARY: MemorySanitizer: use-of-uninitialized-value /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1352:23 in (anonymous namespace)::LowerTypeTestsModule::lower()</div><div>Exiting</div><div>FileCheck error: '-' is empty.</div><div>FileCheck command line:  /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_msan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/test/Transforms/LowerTypeTests/import-unsat.ll</div><div><br></div><div>--</div><div><br></div><div>********************</div><div>Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. </div><div>Testing Time: 197.85s</div><div>********************</div><div>Failing Tests (3):</div><div>    LLVM :: LTO/Resolution/X86/lowertypetests.ll</div><div>    LLVM :: Transforms/LowerTypeTests/import-unsat.ll</div><div>    LLVM :: Transforms/LowerTypeTests/import.ll</div><div><br></div><div>  Expected Passes    : 18870</div></div><div><br></div><div><div>==9209==ERROR: AddressSanitizer: heap-use-after-free on address 0x60e000007158 at pc 0x00000406c087 bp 0x7f8aeeff4f90 sp 0x7f8aeeff4f88</div><div>READ of size 8 at 0x60e000007158 thread T1</div><div>    #0 0x406c086 in materialized_use_begin /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/IR/Value.h:314:63</div><div>    #1 0x406c086 in materialized_uses /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/IR/Value.h:329</div><div>    #2 0x406c086 in uses /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/include/llvm/IR/Value.h:336</div><div>    #3 0x406c086 in (anonymous namespace)::LowerTypeTestsModule::lower() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:1352</div><div>    #4 0x406f330 in (anonymous namespace)::LowerTypeTests::runOnModule(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Transforms/IPO/LowerTypeTests.cpp:368:53</div><div>    #5 0x291d38a in runOnModule /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1590:27</div><div>    #6 0x291d38a in llvm::legacy::PassManagerImpl::run(llvm::Module&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/IR/LegacyPassManager.cpp:1693</div><div>    #7 0x2a1e6ea in runOldPMPasses /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTOBackend.cpp:191:10</div><div>    #8 0x2a1e6ea in (anonymous namespace)::opt(llvm::lto::Config&, llvm::TargetMachine*, unsigned int, llvm::Module&, bool, llvm::ModuleSummaryIndex&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTOBackend.cpp:197</div><div>    #9 0x2a20524 in llvm::lto::thinBackend(llvm::lto::Config&, unsigned int, std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>, llvm::Module&, llvm::ModuleSummaryIndex&, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTOBackend.cpp:373:8</div><div>    #10 0x2a145ae in (anonymous namespace)::InProcessThinBackend::runThinLTOBackendThread(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>, std::__1::function<std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)> (unsigned int, llvm::StringRef)>, unsigned int, llvm::BitcodeModule, llvm::ModuleSummaryIndex&, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const&, std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const&, std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)::{lambda(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>)#1}::operator()(std::__1::function<std::__1::unique_ptr<llvm::lto::NativeObjectStream, std::__1::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>) const /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:663:14</div><div>    #11 0x2a127ff in runThinLTOBackendThread /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:674:14</div><div>    #12 0x2a127ff in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:704</div><div>    #13 0x2a127ff in __invoke<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9) &, llvm::BitcodeModule &, llvm::ModuleSummaryIndex &, const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> &, const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > &, const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > &, const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > &, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > &> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/type_traits:4301</div><div>    #14 0x2a127ff in __apply_functor<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9), std::__1::tuple<llvm::BitcodeModule, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, std::__1::reference_wrapper<const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> >, std::__1::reference_wrapper<const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > >, std::__1::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > >, 0, 1, 2, 3, 4, 5, 6, std::__1::tuple<> > /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/functional:2217</div><div>    #15 0x2a127ff in operator()<> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/functional:2250</div><div>    #16 0x2a127ff in __invoke<std::__1::__bind<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9), llvm::BitcodeModule &, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, std::__1::reference_wrapper<const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> >, std::__1::reference_wrapper<const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > >, std::__1::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > > &> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/type_traits:4301</div><div>    #17 0x2a127ff in __call<std::__1::__bind<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/LTO/LTO.cpp:697:9), llvm::BitcodeModule &, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, std::__1::reference_wrapper<const llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, unsigned int> > >, llvm::MallocAllocator> >, std::__1::reference_wrapper<const std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValue::LinkageTypes> > > >, std::__1::reference_wrapper<const std::__1::map<unsigned long, llvm::GlobalValueSummary *, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<const unsigned long, llvm::GlobalValueSummary *> > > >, std::__1::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > > &> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/__functional_base:359</div><div>    #18 0x2a127ff in std::__1::__function::__func<std::__1::__bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const&, std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)::{lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const&, std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const&, std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const&, std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)#1}, llvm::BitcodeModule&, std::__1::reference_wrapper<llvm::ModuleSummaryIndex>, llvm::BitcodeModule&<llvm::StringMap<std::__1::map<unsigned long, unsigned int, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, unsigned int> > >, llvm::MallocAllocator> const>, llvm::BitcodeModule&<std::__1::unordered_set<unsigned long, std::__1::hash<unsigned long>, std::__1::equal_to<unsigned long>, std::__1::allocator<unsigned long> > const>, llvm::BitcodeModule&<std::__1::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValue::LinkageTypes> > > const>, llvm::BitcodeModule&<std::__1::map<unsigned long, llvm::GlobalValueSummary*, std::__1::less<unsigned long>, std::__1::allocator<std::__1::pair<unsigned long const, llvm::GlobalValueSummary*> > > const>, llvm::BitcodeModule&<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > >, std::__1::allocator<llvm::BitcodeModule&<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, std::__1::vector<std::__1::pair<llvm::StringRef, llvm::BitcodeModule>, std::__1::allocator<std::__1::pair<llvm::StringRef, llvm::BitcodeModule> > > > > >, void ()>::operator()() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/functional:1552</div><div>    #19 0x2d558bd in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/future:1997:12</div><div>    #20 0x2d558bd in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/future:2217</div><div>    #21 0x2d558bd in operator() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/ThreadPool.cpp:57</div><div>    #22 0x2d558bd in __invoke<(lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/ThreadPool.cpp:32:26)> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/type_traits:4301</div><div>    #23 0x2d558bd in __thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, (lambda at /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/lib/Support/ThreadPool.cpp:32:26)> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/thread:336</div><div>    #24 0x2d558bd in void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, llvm::ThreadPool::ThreadPool(unsigned int)::$_0> >(void*) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/thread:346</div><div>    #25 0x7f8af29ea6b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)</div><div>    #26 0x7f8af250a82c in clone (/lib/x86_64-linux-gnu/libc.so.6+0x10682c)</div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Jan 20, 2017 at 2:00 PM Peter Collingbourne via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: pcc<br class="gmail_msg">
Date: Fri Jan 20 15:49:34 2017<br class="gmail_msg">
New Revision: 292654<br class="gmail_msg">
<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=292654&view=rev" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project?rev=292654&view=rev</a><br class="gmail_msg">
Log:<br class="gmail_msg">
LowerTypeTests: Implement importing of type identifiers.<br class="gmail_msg">
<br class="gmail_msg">
To import a type identifier we read the summary and create external<br class="gmail_msg">
references to the symbols defined when exporting.<br class="gmail_msg">
<br class="gmail_msg">
Differential Revision: <a href="https://reviews.llvm.org/D28546" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D28546</a><br class="gmail_msg">
<br class="gmail_msg">
Added:<br class="gmail_msg">
    llvm/trunk/test/Transforms/LowerTypeTests/Inputs/import.yaml<br class="gmail_msg">
    llvm/trunk/test/Transforms/LowerTypeTests/import.ll<br class="gmail_msg">
Modified:<br class="gmail_msg">
    llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp<br class="gmail_msg">
<br class="gmail_msg">
Modified: llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp?rev=292654&r1=292653&r2=292654&view=diff" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp?rev=292654&r1=292653&r2=292654&view=diff</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp (original)<br class="gmail_msg">
+++ llvm/trunk/lib/Transforms/IPO/LowerTypeTests.cpp Fri Jan 20 15:49:34 2017<br class="gmail_msg">
@@ -295,6 +295,8 @@ class LowerTypeTestsModule {<br class="gmail_msg">
   Function *WeakInitializerFn = nullptr;<br class="gmail_msg">
<br class="gmail_msg">
   void exportTypeId(StringRef TypeId, const TypeIdLowering &TIL);<br class="gmail_msg">
+  TypeIdLowering importTypeId(StringRef TypeId);<br class="gmail_msg">
+  void importTypeTest(CallInst *CI);<br class="gmail_msg">
<br class="gmail_msg">
   BitSetInfo<br class="gmail_msg">
   buildBitSet(Metadata *TypeId,<br class="gmail_msg">
@@ -499,10 +501,12 @@ Value *LowerTypeTestsModule::createBitSe<br class="gmail_msg">
     return createMaskedBitTest(B, TIL.InlineBits, BitOffset);<br class="gmail_msg">
   } else {<br class="gmail_msg">
     Constant *ByteArray = TIL.TheByteArray;<br class="gmail_msg">
-    if (!LinkerSubsectionsViaSymbols && AvoidReuse) {<br class="gmail_msg">
+    if (!LinkerSubsectionsViaSymbols && AvoidReuse &&<br class="gmail_msg">
+        Action != SummaryAction::Import) {<br class="gmail_msg">
       // Each use of the byte array uses a different alias. This makes the<br class="gmail_msg">
       // backend less likely to reuse previously computed byte array addresses,<br class="gmail_msg">
       // improving the security of the CFI mechanism based on this pass.<br class="gmail_msg">
+      // This won't work when importing because TheByteArray is external.<br class="gmail_msg">
       ByteArray = GlobalAlias::create(Int8Ty, 0, GlobalValue::PrivateLinkage,<br class="gmail_msg">
                                       "bits_use", ByteArray, &M);<br class="gmail_msg">
     }<br class="gmail_msg">
@@ -598,7 +602,7 @@ Value *LowerTypeTestsModule::lowerTypeTe<br class="gmail_msg">
                      IntPtrTy));<br class="gmail_msg">
   Value *BitOffset = B.CreateOr(OffsetSHR, OffsetSHL);<br class="gmail_msg">
<br class="gmail_msg">
-  Constant *BitSizeConst = ConstantExpr::getZExt(TIL.SizeM1, IntPtrTy);<br class="gmail_msg">
+  Constant *BitSizeConst = ConstantExpr::getZExtOrBitCast(TIL.SizeM1, IntPtrTy);<br class="gmail_msg">
   Value *OffsetInRange = B.CreateICmpULE(BitOffset, BitSizeConst);<br class="gmail_msg">
<br class="gmail_msg">
   // If the bit set is all ones, testing against it is unnecessary.<br class="gmail_msg">
@@ -735,6 +739,78 @@ void LowerTypeTestsModule::exportTypeId(<br class="gmail_msg">
                  ConstantExpr::getIntToPtr(TIL.InlineBits, Int8PtrTy));<br class="gmail_msg">
 }<br class="gmail_msg">
<br class="gmail_msg">
+LowerTypeTestsModule::TypeIdLowering<br class="gmail_msg">
+LowerTypeTestsModule::importTypeId(StringRef TypeId) {<br class="gmail_msg">
+  TypeTestResolution &TTRes = Summary->getTypeIdSummary(TypeId).TTRes;<br class="gmail_msg">
+<br class="gmail_msg">
+  TypeIdLowering TIL;<br class="gmail_msg">
+  TIL.TheKind = TTRes.TheKind;<br class="gmail_msg">
+<br class="gmail_msg">
+  auto ImportGlobal = [&](StringRef Name, unsigned AbsWidth) {<br class="gmail_msg">
+    unsigned PtrWidth = IntPtrTy->getBitWidth();<br class="gmail_msg">
+    Constant *C =<br class="gmail_msg">
+        M.getOrInsertGlobal(("__typeid_" + TypeId + "_" + Name).str(), Int8Ty);<br class="gmail_msg">
+    auto *GV = dyn_cast<GlobalVariable>(C);<br class="gmail_msg">
+    // We only need to set metadata if the global is newly created, in which<br class="gmail_msg">
+    // case it would not have hidden visibility.<br class="gmail_msg">
+    if (!GV || GV->getVisibility() == GlobalValue::HiddenVisibility)<br class="gmail_msg">
+      return C;<br class="gmail_msg">
+<br class="gmail_msg">
+    GV->setVisibility(GlobalValue::HiddenVisibility);<br class="gmail_msg">
+    auto SetAbsRange = [&](uint64_t Min, uint64_t Max) {<br class="gmail_msg">
+      auto *T = IntegerType::get(M.getContext(), PtrWidth);<br class="gmail_msg">
+      auto *MinC = ConstantAsMetadata::get(ConstantInt::get(T, Min));<br class="gmail_msg">
+      auto *MaxC = ConstantAsMetadata::get(ConstantInt::get(T, Max));<br class="gmail_msg">
+      GV->setMetadata(LLVMContext::MD_absolute_symbol,<br class="gmail_msg">
+                      MDNode::get(M.getContext(), {MinC, MaxC}));<br class="gmail_msg">
+    };<br class="gmail_msg">
+    if (AbsWidth == PtrWidth)<br class="gmail_msg">
+      SetAbsRange(~0ull, ~0ull); // Full set.<br class="gmail_msg">
+    else if (AbsWidth)<br class="gmail_msg">
+      SetAbsRange(0, 1ull << AbsWidth);<br class="gmail_msg">
+    return C;<br class="gmail_msg">
+  };<br class="gmail_msg">
+<br class="gmail_msg">
+  if (TIL.TheKind != TypeTestResolution::Unsat)<br class="gmail_msg">
+    TIL.OffsetedGlobal = ImportGlobal("global_addr", 0);<br class="gmail_msg">
+<br class="gmail_msg">
+  if (TIL.TheKind == TypeTestResolution::ByteArray ||<br class="gmail_msg">
+      TIL.TheKind == TypeTestResolution::Inline ||<br class="gmail_msg">
+      TIL.TheKind == TypeTestResolution::AllOnes) {<br class="gmail_msg">
+    TIL.AlignLog2 = ConstantExpr::getPtrToInt(ImportGlobal("align", 8), Int8Ty);<br class="gmail_msg">
+    TIL.SizeM1 = ConstantExpr::getPtrToInt(<br class="gmail_msg">
+        ImportGlobal("size_m1", TTRes.SizeM1BitWidth), IntPtrTy);<br class="gmail_msg">
+  }<br class="gmail_msg">
+<br class="gmail_msg">
+  if (TIL.TheKind == TypeTestResolution::ByteArray) {<br class="gmail_msg">
+    TIL.TheByteArray = ImportGlobal("byte_array", 0);<br class="gmail_msg">
+    TIL.BitMask = ImportGlobal("bit_mask", 8);<br class="gmail_msg">
+  }<br class="gmail_msg">
+<br class="gmail_msg">
+  if (TIL.TheKind == TypeTestResolution::Inline)<br class="gmail_msg">
+    TIL.InlineBits = ConstantExpr::getPtrToInt(<br class="gmail_msg">
+        ImportGlobal("inline_bits", 1 << TTRes.SizeM1BitWidth),<br class="gmail_msg">
+        TTRes.SizeM1BitWidth <= 5 ? Int32Ty : Int64Ty);<br class="gmail_msg">
+<br class="gmail_msg">
+  return TIL;<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+void LowerTypeTestsModule::importTypeTest(CallInst *CI) {<br class="gmail_msg">
+  auto TypeIdMDVal = dyn_cast<MetadataAsValue>(CI->getArgOperand(1));<br class="gmail_msg">
+  if (!TypeIdMDVal)<br class="gmail_msg">
+    report_fatal_error("Second argument of llvm.type.test must be metadata");<br class="gmail_msg">
+<br class="gmail_msg">
+  auto TypeIdStr = dyn_cast<MDString>(TypeIdMDVal->getMetadata());<br class="gmail_msg">
+  if (!TypeIdStr)<br class="gmail_msg">
+    report_fatal_error(<br class="gmail_msg">
+        "Second argument of llvm.type.test must be a metadata string");<br class="gmail_msg">
+<br class="gmail_msg">
+  TypeIdLowering TIL = importTypeId(TypeIdStr->getString());<br class="gmail_msg">
+  Value *Lowered = lowerTypeTestCall(TypeIdStr, CI, TIL);<br class="gmail_msg">
+  CI->replaceAllUsesWith(Lowered);<br class="gmail_msg">
+  CI->eraseFromParent();<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
 void LowerTypeTestsModule::lowerTypeTestCalls(<br class="gmail_msg">
     ArrayRef<Metadata *> TypeIds, Constant *CombinedGlobalAddr,<br class="gmail_msg">
     const DenseMap<GlobalTypeMember *, uint64_t> &GlobalLayout) {<br class="gmail_msg">
@@ -1272,6 +1348,12 @@ bool LowerTypeTestsModule::lower() {<br class="gmail_msg">
       Action != SummaryAction::Export)<br class="gmail_msg">
     return false;<br class="gmail_msg">
<br class="gmail_msg">
+  if (Action == SummaryAction::Import) {<br class="gmail_msg">
+    for (const Use &U : TypeTestFunc->uses())<br class="gmail_msg">
+      importTypeTest(cast<CallInst>(U.getUser()));<br class="gmail_msg">
+    return true;<br class="gmail_msg">
+  }<br class="gmail_msg">
+<br class="gmail_msg">
   // Equivalence class set containing type identifiers and the globals that<br class="gmail_msg">
   // reference them. This is used to partition the set of type identifiers in<br class="gmail_msg">
   // the module into disjoint sets.<br class="gmail_msg">
<br class="gmail_msg">
Added: llvm/trunk/test/Transforms/LowerTypeTests/Inputs/import.yaml<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LowerTypeTests/Inputs/import.yaml?rev=292654&view=auto" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LowerTypeTests/Inputs/import.yaml?rev=292654&view=auto</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/test/Transforms/LowerTypeTests/Inputs/import.yaml (added)<br class="gmail_msg">
+++ llvm/trunk/test/Transforms/LowerTypeTests/Inputs/import.yaml Fri Jan 20 15:49:34 2017<br class="gmail_msg">
@@ -0,0 +1,31 @@<br class="gmail_msg">
+---<br class="gmail_msg">
+TypeIdMap:<br class="gmail_msg">
+  allones7:<br class="gmail_msg">
+    TTRes:<br class="gmail_msg">
+      Kind: AllOnes<br class="gmail_msg">
+      SizeM1BitWidth: 7<br class="gmail_msg">
+  allones32:<br class="gmail_msg">
+    TTRes:<br class="gmail_msg">
+      Kind: AllOnes<br class="gmail_msg">
+      SizeM1BitWidth: 32<br class="gmail_msg">
+  bytearray7:<br class="gmail_msg">
+    TTRes:<br class="gmail_msg">
+      Kind: ByteArray<br class="gmail_msg">
+      SizeM1BitWidth: 7<br class="gmail_msg">
+  bytearray32:<br class="gmail_msg">
+    TTRes:<br class="gmail_msg">
+      Kind: ByteArray<br class="gmail_msg">
+      SizeM1BitWidth: 32<br class="gmail_msg">
+  inline5:<br class="gmail_msg">
+    TTRes:<br class="gmail_msg">
+      Kind: Inline<br class="gmail_msg">
+      SizeM1BitWidth: 5<br class="gmail_msg">
+  inline6:<br class="gmail_msg">
+    TTRes:<br class="gmail_msg">
+      Kind: Inline<br class="gmail_msg">
+      SizeM1BitWidth: 6<br class="gmail_msg">
+  single:<br class="gmail_msg">
+    TTRes:<br class="gmail_msg">
+      Kind: Single<br class="gmail_msg">
+      SizeM1BitWidth: 0<br class="gmail_msg">
+...<br class="gmail_msg">
<br class="gmail_msg">
Added: llvm/trunk/test/Transforms/LowerTypeTests/import.ll<br class="gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LowerTypeTests/import.ll?rev=292654&view=auto" rel="noreferrer" class="gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LowerTypeTests/import.ll?rev=292654&view=auto</a><br class="gmail_msg">
==============================================================================<br class="gmail_msg">
--- llvm/trunk/test/Transforms/LowerTypeTests/import.ll (added)<br class="gmail_msg">
+++ llvm/trunk/test/Transforms/LowerTypeTests/import.ll Fri Jan 20 15:49:34 2017<br class="gmail_msg">
@@ -0,0 +1,170 @@<br class="gmail_msg">
+; RUN: opt -S -lowertypetests -lowertypetests-summary-action=import -lowertypetests-read-summary=%S/Inputs/import.yaml < %s | FileCheck %s<br class="gmail_msg">
+<br class="gmail_msg">
+target datalayout = "e-p:64:64"<br class="gmail_msg">
+<br class="gmail_msg">
+declare i1 @llvm.type.test(i8* %ptr, metadata %bitset) nounwind readnone<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK-DAG: @__typeid_single_global_addr = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline6_global_addr = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline6_align = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline6_size_m1 = external hidden global i8, !absolute_symbol !1<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline6_inline_bits = external hidden global i8, !absolute_symbol !2<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline5_global_addr = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline5_align = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline5_size_m1 = external hidden global i8, !absolute_symbol !3<br class="gmail_msg">
+; CHECK-DAG: @__typeid_inline5_inline_bits = external hidden global i8, !absolute_symbol !4<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray32_global_addr = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray32_align = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray32_size_m1 = external hidden global i8, !absolute_symbol !4<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray32_byte_array = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray32_bit_mask = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray7_global_addr = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray7_align = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray7_size_m1 = external hidden global i8, !absolute_symbol !5<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray7_byte_array = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_bytearray7_bit_mask = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_allones32_global_addr = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_allones32_align = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_allones32_size_m1 = external hidden global i8, !absolute_symbol !4<br class="gmail_msg">
+; CHECK-DAG: @__typeid_allones7_global_addr = external hidden global i8<br class="gmail_msg">
+; CHECK-DAG: @__typeid_allones7_align = external hidden global i8, !absolute_symbol !0<br class="gmail_msg">
+; CHECK-DAG: @__typeid_allones7_size_m1 = external hidden global i8, !absolute_symbol !5<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: define i1 @allones7(i8* [[p:%.*]])<br class="gmail_msg">
+define i1 @allones7(i8* %p) {<br class="gmail_msg">
+  ; CHECK-NEXT: [[pi:%.*]] = ptrtoint i8* [[p]] to i64<br class="gmail_msg">
+  ; CHECK-NEXT: [[sub:%.*]] = sub i64 [[pi]], ptrtoint (i8* @__typeid_allones7_global_addr to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[lshr:%.*]] = lshr i64 [[sub]], zext (i8 ptrtoint (i8* @__typeid_allones7_align to i8) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl:%.*]] = shl i64 [[sub]], zext (i8 sub (i8 64, i8 ptrtoint (i8* @__typeid_allones7_align to i8)) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[or:%.*]] = or i64 [[lshr]], [[shl]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ule:%.*]] = icmp ule i64 [[or]], ptrtoint (i8* @__typeid_allones7_size_m1 to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: ret i1 [[ule]]<br class="gmail_msg">
+  %x = call i1 @llvm.type.test(i8* %p, metadata !"allones7")<br class="gmail_msg">
+  ret i1 %x<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: define i1 @allones32(i8* [[p:%.*]])<br class="gmail_msg">
+define i1 @allones32(i8* %p) {<br class="gmail_msg">
+  ; CHECK-NEXT: [[pi:%.*]] = ptrtoint i8* [[p]] to i64<br class="gmail_msg">
+  ; CHECK-NEXT: [[sub:%.*]] = sub i64 [[pi]], ptrtoint (i8* @__typeid_allones32_global_addr to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[lshr:%.*]] = lshr i64 [[sub]], zext (i8 ptrtoint (i8* @__typeid_allones32_align to i8) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl:%.*]] = shl i64 [[sub]], zext (i8 sub (i8 64, i8 ptrtoint (i8* @__typeid_allones32_align to i8)) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[or:%.*]] = or i64 [[lshr]], [[shl]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ule:%.*]] = icmp ule i64 [[or]], ptrtoint (i8* @__typeid_allones32_size_m1 to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: ret i1 [[ule]]<br class="gmail_msg">
+  %x = call i1 @llvm.type.test(i8* %p, metadata !"allones32")<br class="gmail_msg">
+  ret i1 %x<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: define i1 @bytearray7(i8* [[p:%.*]])<br class="gmail_msg">
+define i1 @bytearray7(i8* %p) {<br class="gmail_msg">
+  ; CHECK-NEXT: [[pi:%.*]] = ptrtoint i8* [[p]] to i64<br class="gmail_msg">
+  ; CHECK-NEXT: [[sub:%.*]] = sub i64 [[pi]], ptrtoint (i8* @__typeid_bytearray7_global_addr to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[lshr:%.*]] = lshr i64 [[sub]], zext (i8 ptrtoint (i8* @__typeid_bytearray7_align to i8) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl:%.*]] = shl i64 [[sub]], zext (i8 sub (i8 64, i8 ptrtoint (i8* @__typeid_bytearray7_align to i8)) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[or:%.*]] = or i64 [[lshr]], [[shl]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ule:%.*]] = icmp ule i64 [[or]], ptrtoint (i8* @__typeid_bytearray7_size_m1 to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: br i1 [[ule]], label %[[t:.*]], label %[[f:.*]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[t]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[gep:%.*]] = getelementptr i8, i8* @__typeid_bytearray7_byte_array, i64 [[or]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[load:%.*]] = load i8, i8* [[gep]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[and:%.*]] = and i8 [[load]], ptrtoint (i8* @__typeid_bytearray7_bit_mask to i8)<br class="gmail_msg">
+  ; CHECK-NEXT: [[ne:%.*]] = icmp ne i8 [[and]], 0<br class="gmail_msg">
+  ; CHECK-NEXT: br label %[[f]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[f]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[phi:%.*]] = phi i1 [ false, %0 ], [ [[ne]], %[[t]] ]<br class="gmail_msg">
+  ; CHECK-NEXT: ret i1 [[phi]]<br class="gmail_msg">
+  %x = call i1 @llvm.type.test(i8* %p, metadata !"bytearray7")<br class="gmail_msg">
+  ret i1 %x<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: define i1 @bytearray32(i8* [[p:%.*]])<br class="gmail_msg">
+define i1 @bytearray32(i8* %p) {<br class="gmail_msg">
+  ; CHECK-NEXT: [[pi:%.*]] = ptrtoint i8* [[p]] to i64<br class="gmail_msg">
+  ; CHECK-NEXT: [[sub:%.*]] = sub i64 [[pi]], ptrtoint (i8* @__typeid_bytearray32_global_addr to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[lshr:%.*]] = lshr i64 [[sub]], zext (i8 ptrtoint (i8* @__typeid_bytearray32_align to i8) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl:%.*]] = shl i64 [[sub]], zext (i8 sub (i8 64, i8 ptrtoint (i8* @__typeid_bytearray32_align to i8)) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[or:%.*]] = or i64 [[lshr]], [[shl]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ule:%.*]] = icmp ule i64 [[or]], ptrtoint (i8* @__typeid_bytearray32_size_m1 to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: br i1 [[ule]], label %[[t:.*]], label %[[f:.*]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[t]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[gep:%.*]] = getelementptr i8, i8* @__typeid_bytearray32_byte_array, i64 [[or]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[load:%.*]] = load i8, i8* [[gep]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[and:%.*]] = and i8 [[load]], ptrtoint (i8* @__typeid_bytearray32_bit_mask to i8)<br class="gmail_msg">
+  ; CHECK-NEXT: [[ne:%.*]] = icmp ne i8 [[and]], 0<br class="gmail_msg">
+  ; CHECK-NEXT: br label %[[f]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[f]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[phi:%.*]] = phi i1 [ false, %0 ], [ [[ne]], %[[t]] ]<br class="gmail_msg">
+  ; CHECK-NEXT: ret i1 [[phi]]<br class="gmail_msg">
+  %x = call i1 @llvm.type.test(i8* %p, metadata !"bytearray32")<br class="gmail_msg">
+  ret i1 %x<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: define i1 @inline5(i8* [[p:%.*]])<br class="gmail_msg">
+define i1 @inline5(i8* %p) {<br class="gmail_msg">
+  ; CHECK-NEXT: [[pi:%.*]] = ptrtoint i8* [[p]] to i64<br class="gmail_msg">
+  ; CHECK-NEXT: [[sub:%.*]] = sub i64 [[pi]], ptrtoint (i8* @__typeid_inline5_global_addr to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[lshr:%.*]] = lshr i64 [[sub]], zext (i8 ptrtoint (i8* @__typeid_inline5_align to i8) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl:%.*]] = shl i64 [[sub]], zext (i8 sub (i8 64, i8 ptrtoint (i8* @__typeid_inline5_align to i8)) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[or:%.*]] = or i64 [[lshr]], [[shl]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ule:%.*]] = icmp ule i64 [[or]], ptrtoint (i8* @__typeid_inline5_size_m1 to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: br i1 [[ule]], label %[[t:.*]], label %[[f:.*]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[t]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[trunc:%.*]] = trunc i64 [[or]] to i32<br class="gmail_msg">
+  ; CHECK-NEXT: [[and:%.*]] = and i32 [[trunc]], 31<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl2:%.*]] = shl i32 1, [[and]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[and2:%.*]] = and i32 ptrtoint (i8* @__typeid_inline5_inline_bits to i32), [[shl2]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ne:%.*]] = icmp ne i32 [[and2]], 0<br class="gmail_msg">
+  ; CHECK-NEXT: br label %[[f]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[f]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[phi:%.*]] = phi i1 [ false, %0 ], [ [[ne]], %[[t]] ]<br class="gmail_msg">
+  ; CHECK-NEXT: ret i1 [[phi]]<br class="gmail_msg">
+  %x = call i1 @llvm.type.test(i8* %p, metadata !"inline5")<br class="gmail_msg">
+  ret i1 %x<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: define i1 @inline6(i8* [[p:%.*]])<br class="gmail_msg">
+define i1 @inline6(i8* %p) {<br class="gmail_msg">
+  ; CHECK-NEXT: [[pi:%.*]] = ptrtoint i8* [[p]] to i64<br class="gmail_msg">
+  ; CHECK-NEXT: [[sub:%.*]] = sub i64 [[pi]], ptrtoint (i8* @__typeid_inline6_global_addr to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[lshr:%.*]] = lshr i64 [[sub]], zext (i8 ptrtoint (i8* @__typeid_inline6_align to i8) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl:%.*]] = shl i64 [[sub]], zext (i8 sub (i8 64, i8 ptrtoint (i8* @__typeid_inline6_align to i8)) to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: [[or:%.*]] = or i64 [[lshr]], [[shl]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ule:%.*]] = icmp ule i64 [[or]], ptrtoint (i8* @__typeid_inline6_size_m1 to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: br i1 [[ule]], label %[[t:.*]], label %[[f:.*]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[t]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[and:%.*]] = and i64 [[or]], 63<br class="gmail_msg">
+  ; CHECK-NEXT: [[shl2:%.*]] = shl i64 1, [[and]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[and2:%.*]] = and i64 ptrtoint (i8* @__typeid_inline6_inline_bits to i64), [[shl2]]<br class="gmail_msg">
+  ; CHECK-NEXT: [[ne:%.*]] = icmp ne i64 [[and2]], 0<br class="gmail_msg">
+  ; CHECK-NEXT: br label %[[f]]<br class="gmail_msg">
+<br class="gmail_msg">
+  ; CHECK: [[f]]:<br class="gmail_msg">
+  ; CHECK-NEXT: [[phi:%.*]] = phi i1 [ false, %0 ], [ [[ne]], %[[t]] ]<br class="gmail_msg">
+  ; CHECK-NEXT: ret i1 [[phi]]<br class="gmail_msg">
+  %x = call i1 @llvm.type.test(i8* %p, metadata !"inline6")<br class="gmail_msg">
+  ret i1 %x<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: define i1 @single(i8* [[p:%.*]])<br class="gmail_msg">
+define i1 @single(i8* %p) {<br class="gmail_msg">
+  ; CHECK-NEXT: [[pi:%.*]] = ptrtoint i8* [[p]] to i64<br class="gmail_msg">
+  ; CHECK-NEXT: [[eq:%.*]] = icmp eq i64 [[pi]], ptrtoint (i8* @__typeid_single_global_addr to i64)<br class="gmail_msg">
+  ; CHECK-NEXT: ret i1 [[eq]]<br class="gmail_msg">
+  %x = call i1 @llvm.type.test(i8* %p, metadata !"single")<br class="gmail_msg">
+  ret i1 %x<br class="gmail_msg">
+}<br class="gmail_msg">
+<br class="gmail_msg">
+; CHECK: !0 = !{i64 0, i64 256}<br class="gmail_msg">
+; CHECK: !1 = !{i64 0, i64 64}<br class="gmail_msg">
+; CHECK: !2 = !{i64 -1, i64 -1}<br class="gmail_msg">
+; CHECK: !3 = !{i64 0, i64 32}<br class="gmail_msg">
+; CHECK: !4 = !{i64 0, i64 4294967296}<br class="gmail_msg">
+; CHECK: !5 = !{i64 0, i64 128}<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
llvm-commits mailing list<br class="gmail_msg">
<a href="mailto:llvm-commits@lists.llvm.org" class="gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="gmail_msg">
</blockquote></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr">Mike<br>Sent from phone</div></div>