<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div>I got the same error with the new patch.<div class="">0 0  clang                    clang                    0x0000000102b8e259 0x0000000106d9c259  llvm::sys::PrintStackTrace(__sFILE*) + 57<br class="">llvm::sys::PrintStackTrace(__sFILE*) + 57<br class="">1  clang                    0x0000000106d9cdab 1 SignalHandler(int) clang                    0x0000000102b8edab + 347 <br class="">SignalHandler(int)2  + 347 libsystem_platform.dylib<br class=""> 0x00007fff8ad0af1a _sigtramp2  + 26<br class=""> libsystem_platform.dylib3  0x00007fff8ad0af1a libsystem_platform.dylib  0xffffffffffffffff_sigtramp  + 26_sigtramp<br class=""> + 1966035199<br class="">3  libsystem_platform.dylib 0xffffffffffffffff _sigtramp + 1966035199<br class="">4  libsystem_c.dylib        0x00007fff8eafbb73 abort + 129<br class="">4  libsystem_c.dylib       5  0x00007fff8eafbb73 libsystem_malloc.dylib    0x00007fff8cdc0937abort  + 129nano_size<br class=""> + 0<br class="">5  libsystem_malloc.dylib   0x00007fff8cdc0937 nano_size + 0<br class="">6  clang                    0x00000001063f67a9 6  clang                    0x00000001021e87a9 (anonymous namespace)::X86TTI::getIntImmCost(llvm::APInt const&, llvm::Type*) const + 601<br class="">(anonymous namespace)::X86TTI::getIntImmCost(llvm::APInt const&, llvm::Type*) const + 601<br class="">7  clang                    0x00000001063f5cc87   clang                    0x00000001021e7cc8 non-virtual thunk to (anonymous namespace)::X86TTI::getIntImmCost(unsigned int, unsigned int, llvm::APInt const&, llvm::Type*) const + 216non-virtual thunk to (anonymous namespace)::X86TTI::getIntImmCost(unsigned int, unsigned int, llvm::APInt const&, llvm::Type*) const<br class=""> + 216<br class="">8 8  clang                    clang                    0x00000001067b2323 0x00000001025a4323  (anonymous namespace)::ConstantHoisting::collectConstantCandidates(llvm::DenseMap<llvm::ConstantInt*, unsigned int, llvm::DenseMapInfo<llvm::ConstantInt*> >&, llvm::Instruction*, unsigned int, llvm::ConstantInt*)(anonymous namespace)::ConstantHoisting::collectConstantCandidates(llvm::DenseMap<llvm::ConstantInt*, unsigned int, llvm::DenseMapInfo<llvm::ConstantInt*> >&, llvm::Instruction*, unsigned int, llvm::ConstantInt*) + 211 + 211<br class=""><br class="">9 9  clang                    clang                    0x00000001067adce4 0x000000010259fce4  (anonymous namespace)::ConstantHoisting::runOnFunction(llvm::Function&)(anonymous namespace)::ConstantHoisting::runOnFunction(llvm::Function&) + 516 + 516<br class=""><br class="">1010 clang                    clang                    0x0000000106d22a25 0x0000000102b14a25  llvm::FPPassManager::runOnFunction(llvm::Function&)llvm::FPPassManager::runOnFunction(llvm::Function&) + 549 + 549<br class=""><br class=""></div><div class="">Manman</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 21, 2014, at 3:57 PM, Balaram Makam <<a href="mailto:bmakam@codeaurora.org" class="">bmakam@codeaurora.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">Hi Manman,<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class=""> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">Thanks for trying out.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class=""> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">I agree that I need to reproduce the issue first but since I was not able to reproduce the issue I inspected my code and found that call to performScalarPRE should be guarded by the flags EnablePRE && EnableLoadPRE.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">I assume when you initialize the pass manager in LTO you turn off EnableLoadPRE flag, I suspect when the flag is off this could be an issue but this is only speculation at this point since I cannot reproduce your issue.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class=""> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">Thanks,<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">Balaram<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class=""> </span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><b class=""><span style="font-size: 10pt; font-family: Tahoma, sans-serif;" class="">From:</span></b><span style="font-size: 10pt; font-family: Tahoma, sans-serif;" class=""><span class="Apple-converted-space"> </span>Manman Ren [<a href="mailto:manman.ren@gmail.com" class="">mailto:manman.ren@gmail.com</a>]<span class="Apple-converted-space"> </span><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Friday, November 21, 2014 6:39 PM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Balaram Makam; <a href="mailto:llvm-commits@cs.uiuc.edu" class="">llvm-commits@cs.uiuc.edu</a><br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>Re: [llvm] r222039 - Reapply r221924: "[GVN] Perform Scalar PRE on gep indices that feed loads before<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">I locally applied your patch, its only difference from r222039 is:<o:p class=""></o:p></div></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">Index: lib/Transforms/Scalar/GVN.cpp<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">===================================================================<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">--- lib/Transforms/Scalar/GVN.cpp     (revision 222239)<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+++ lib/Transforms/Scalar/GVN.cpp  (working copy)<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">@@ -1732,12 +1732,15 @@<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">   }<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""> <o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">   // If this load follows a GEP, see if we can PRE the indices before analyzing.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">-  if (GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(LI->getOperand(0))) {<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">-    for (GetElementPtrInst::op_iterator OI = GEP->idx_begin(),<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">-                                        OE = GEP->idx_end();<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">-         OI != OE; ++OI)<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">-      if (Instruction *I = dyn_cast<Instruction>(OI->get()))<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">-        performScalarPRE(I);<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+  if (EnablePRE && EnableLoadPRE) {<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+    if (GetElementPtrInst *GEP =<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+        dyn_cast<GetElementPtrInst>(LI->getOperand(0))) {<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+      for (GetElementPtrInst::op_iterator OI = GEP->idx_begin(),<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+                                          OE = GEP->idx_end();<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+           OI != OE; ++OI)<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+        if (Instruction *I = dyn_cast<Instruction>(OI->get()))<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+          performScalarPRE(I);<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">+    }<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">   }<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""> <o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">   // Step 2: Analyze the availability of the load<o:p class=""></o:p></div></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">I don't quite get why this can fix the lto selfhost. You probably need to reproduce the issue first.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">Manman<o:p class=""></o:p></div></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">On Fri, Nov 21, 2014 at 3:24 PM, Manman Ren <<a href="mailto:manman.ren@gmail.com" target="_blank" style="color: purple; text-decoration: underline;" class="">manman.ren@gmail.com</a>> wrote:<o:p class=""></o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">Hi Balaram,<o:p class=""></o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">I didn't do anything special about libcxx. All I did was "configure + make".<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">Maybe someone else can help you with this error.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">I will try to very the patch today, it is going to lock up my computer for 2 hours.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">If I can't, I will try it after the Thanksgiving break.<o:p class=""></o:p></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="color: rgb(136, 136, 136);" class=""> </span></div></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span class="hoenzb"><span style="color: rgb(136, 136, 136);" class="">Manman</span></span><o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">On Fri, Nov 21, 2014 at 11:58 AM, Balaram Makam <<a href="mailto:bmakam@codeaurora.org" target="_blank" style="color: purple; text-decoration: underline;" class="">bmakam@codeaurora.org</a>> wrote:<o:p class=""></o:p></div><p class="MsoNormal" style="margin: 0in 0in 12pt; font-size: 12pt; font-family: 'Times New Roman', serif;">Hi Manman,<br class=""><br class="">Could you please point me out how to build libcxx and libcxxabi on linux to build lto selfhost?<br class=""><br class="">I keep getting the following error when trying to build libcxx and libcxxabi:<br class=""><br class="">CMake Error at cmake/modules/HandleLLVMOptions.cmake:38 (message):<br class="">  Host Clang must be able to find libstdc++4.7 or newer!<br class=""><br class="">Thanks,<br class="">Balaram<br class=""><br class="">-----Original Message-----<br class="">From:<span class="Apple-converted-space"> </span><a href="mailto:llvm-commits-bounces@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits-bounces@cs.uiuc.edu</a><span class="Apple-converted-space"> </span>[mailto:<a href="mailto:llvm-commits-bounces@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits-bounces@cs.uiuc.edu</a>] On Behalf Of Hao Liu<br class="">Sent: Friday, November 21, 2014 2:25 AM<br class="">To: Manman Ren<br class="">Cc:<span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits@cs.uiuc.edu</a><br class="">Subject: Re: [llvm] r222039 - Reapply r221924: "[GVN] Perform Scalar PRE on gep indices that feed loads before<o:p class=""></o:p></p><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">Hi Manman,<br class=""><br class="">Unfortunately, I still have such build failures. It seems not related to the source. Something must be wrong with my process.<br class=""><br class="">As you can easily reproduce it, maybe you can help Balaram to verify his new patch,<br class=""><br class="">Thanks,<br class="">-Hao<br class=""><br class="">2014-11-21 0:42 GMT+08:00 Manman Ren <<a href="mailto:manman.ren@gmail.com" target="_blank" style="color: purple; text-decoration: underline;" class="">manman.ren@gmail.com</a>>:<br class="">> Hi Hao,<br class="">><br class="">> Sorry about missing the step of acquiring source. What I did was<br class="">> trying to replicate what the build bot is doing.<br class="">><br class="">> Yes, libcxx is part of the source acquiring. See<br class="">><br class="">><span class="Apple-converted-space"> </span><a href="http://lab.llvm.org:8080/green/job/clang-Rlto_master_acquire/514/conso" target="_blank" style="color: purple; text-decoration: underline;" class="">http://lab.llvm.org:8080/green/job/clang-Rlto_master_acquire/514/conso</a><br class="">> le<br class="">><br class="">> for a list of projects.<br class="">><br class="">> If you still have problem reproducing, let me know.<br class="">><br class="">> Manman<br class="">><br class="">> On Thu, Nov 20, 2014 at 2:49 AM, Hao Liu <<a href="mailto:Hao.Liu@arm.com" target="_blank" style="color: purple; text-decoration: underline;" class="">Hao.Liu@arm.com</a>> wrote:<br class="">>><br class="">>> Hi Manman,<br class="">>><br class="">>><br class="">>><br class="">>> I tried your steps on the same revision as yours: r222239@trunk. But<br class="">>> failed to reproduce it. Is it related to libc++ version? If so, what<br class="">>> revision is used in your test.<br class="">>><br class="">>><br class="">>><br class="">>> I tired libc++ reversion of r222425 and r222425 and followed your steps.<br class="">>><br class="">>> But it had build failures on 1st step:<br class="">>><br class="">>> llvm[2]: Linking Release+Asserts executable FileCheck (without<br class="">>> symbols)<br class="">>><br class="">>><br class="">>> build/utils/FileCheck/Release+Asserts/FileCheck.o:llvm/utils/FileChec<br class="">>> k/FileCheck.cpp:function llvm::cl::list<std::__1::basic_string<char,<br class="">>> std::__1::char_traits<char>, std::__1::allocator<char> >, bool,<br class="">>> llvm::cl::parser<std::__1::basic_string<char,<br class="">>> std::__1::char_traits<char>, std::__1::allocator<char> > ><br class="">>> >::~list(): error: undefined reference to 'operator delete(void*)'<br class="">>><br class="">>> …<br class="">>><br class="">>><br class="">>><br class="">>> Also I tried to configure without “--enable-libcpp”,  both steps were<br class="">>> finished. But can not reproduce the failures on fixxfti.c and fixunsxfti.c.<br class="">>> So I think libc++ is necessary.<br class="">>><br class="">>><br class="">>><br class="">>> Thanks,<br class="">>><br class="">>> -Hao<br class="">>><br class="">>><br class="">>><br class="">>> From:<span class="Apple-converted-space"> </span><a href="mailto:llvm-commits-bounces@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits-bounces@cs.uiuc.edu</a><br class="">>> [mailto:<a href="mailto:llvm-commits-bounces@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits-bounces@cs.uiuc.edu</a>] On Behalf Of Manman Ren<br class="">>> Sent: Thursday, November 20, 2014 8:29 AM<br class="">>> To: Balaram Makam<br class="">>> Cc:<span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits@cs.uiuc.edu</a><br class="">>><br class="">>><br class="">>> Subject: Re: [llvm] r222039 - Reapply r221924: "[GVN] Perform Scalar<br class="">>> PRE on gep indices that feed loads before<br class="">>><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>> On Nov 19, 2014, at 3:46 PM, Balaram Makam <<a href="mailto:bmakam@codeaurora.org" target="_blank" style="color: purple; text-decoration: underline;" class="">bmakam@codeaurora.org</a>> wrote:<br class="">>><br class="">>><br class="">>><br class="">>> Hi Manman,<br class="">>><br class="">>> I have a patch with a potential fix to the problem, but I cannot<br class="">>> reproduce the original failure with the preprocessed source files you provided.<br class="">>><br class="">>><br class="">>><br class="">>> Hi Balaram,<br class="">>><br class="">>><br class="">>><br class="">>> You need to build a lto selfhost to reproduce.<br class="">>><br class="">>><br class="">>><br class="">>> 1> make a release+assert build with your patch (install the compiler<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> 1> to a<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> directory clang-install for example).<br class="">>><br class="">>><br class="">>><br class="">>> create directory clang-build and clang-install under llvm<br class="">>><br class="">>> under clang-build, do:<br class="">>>   ./llvm/configure --enable-assertions --enable-optimized<br class="">>> --disable-bindings --enable-targets=x86,x86_64 --enable-libcpp<br class="">>> --prefix=Users/manmanren/llvm/clang-install<br class="">>><br class="">>>   make -j 12 VERBOSE=1<br class="">>> CLANG_REPOSITORY_STRING=clang-stage1-configure-RA_build SVN_REVISION=222059<br class="">>>   make install-clang -j 4<br class="">>><br class="">>><br class="">>><br class="">>> 2> use clang-install binary and library to build the same repo with lto.<br class="">>><br class="">>><br class="">>> create directory selfhost, under selfhost, do:<br class="">>><br class="">>> ../llvm/configure --disable-assertions --with-extra-options="-flto<br class="">>> -gline-tables-only” --enable-optimized --disable-bindings<br class="">>> --enable-targets=x86,x86_64 --enable-libcpp<br class="">>> CC=/Users/manmanren/llvm/clang-install/bin/clang<br class="">>> CXX=/Users/manmanren/gmail/clang-install/llvm/clang++<br class="">>><br class="">>><br class="">>><br class="">>>    make -j 4 VERBOSE=1<br class="">>> CLANG_REPOSITORY_STRING=clang-Rlto_master_build<br class="">>> SVN_REVISION=222059<br class="">>> DYLD_LIBRARY_PATH=/Users/manmanren/llvm_gmail/clang-install/lib/<br class="">>><br class="">>><br class="">>><br class="">>> The whole process takes a few hours to run.You can also commit the<br class="">>> patch if you are confident enough and then watch the bot (phase 2 lto).<br class="">>><br class="">>><br class="">>><br class="">>> Manman<br class="">>><br class="">>><br class="">>><br class="">>> Could you please test this patch (attached) and let me know if it works?<br class="">>><br class="">>> Thanks,<br class="">>> Balaram<br class="">>><br class="">>><br class="">>> -----Original Message-----<br class="">>> From: Chad Rosier [mailto:<a href="mailto:mcrosier@codeaurora.org" target="_blank" style="color: purple; text-decoration: underline;" class="">mcrosier@codeaurora.org</a>]<br class="">>> Sent: Tuesday, November 18, 2014 9:09 PM<br class="">>> To: Manman Ren<br class="">>> Cc:<span class="Apple-converted-space"> </span><a href="mailto:mcrosier@codeaurora.org" target="_blank" style="color: purple; text-decoration: underline;" class="">mcrosier@codeaurora.org</a>;<span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits@cs.uiuc.edu</a>; Balaram Makam;<br class="">>> James Molloy<br class="">>> Subject: Re: [llvm] r222039 - Reapply r221924: "[GVN] Perform Scalar<br class="">>> PRE on gep indices that feed loads before<br class="">>><br class="">>> Thanks, Manman.  Balaram or another one of our team members will<br class="">>> investigate.<br class="">>><br class="">>> Chad<br class="">>><br class="">>><br class="">>><br class="">>><br class="">>> Hi Chad,<br class="">>><br class="">>> I reverted the commit in r222287.<br class="">>><br class="">>> The lto self host of r222239 without this commit succeeded.<br class="">>> And I have finished the lto self host of r222239 including this<br class="">>> commit, it failed. If you need any more files, let me know.<br class="">>><br class="">>> Thanks,<br class="">>> Manman<br class="">>><br class="">>> clang(59539,0x7fff7c035300) malloc: *** error for object 0x7fa438648450:<br class="">>> pointer being freed was not allocated<br class="">>> *** set a breakpoint in malloc_error_break to debug<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/fixxfti.c<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/x86_64/<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> f loatdidf.c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/fixxfti.o<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/fixxfti.c<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/x86_64/<br class="">>> f loatdisf.c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins__x86_64/floatdisf.o<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/x86_64/<br class="">>> f loatdisf.c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins__x86_64/floatdidf.o<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/x86_64/<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> f<br class="">>> loatdidf.c<br class="">>> clang(59547,0x7fff7c035300) malloc: *** error for object 0x7f9410f1c0d0:<br class="">>> pointer being freed was not allocated<br class="">>> *** set a breakpoint in malloc_error_break to debug<br class="">>> 0  clang                    0x000000010c15d259<br class="">>> llvm::sys::PrintStackTrace(__sFILE*) + 57<br class="">>> 1  clang                    0x000000010c15ddab SignalHandler(int) + 347<br class="">>> 2  libsystem_platform.dylib 0x00007fff980faf1a _sigtramp + 26<br class="">>> 3  libsystem_platform.dylib 0xffffffffffffffff _sigtramp + 1743802623<br class="">>> 4  libsystem_c.dylib        0x00007fff982ccb73 abort + 129<br class="">>> 5  libsystem_malloc.dylib   0x00007fff98e7b937 nano_size + 0<br class="">>> 6  clang                    0x000000010b7b77b9 (anonymous<br class="">>> namespace)::X86TTI::getIntImmCost(llvm::APInt const&, llvm::Type*)<br class="">>> const +<br class="">>> 601<br class="">>> 7  clang                    0x000000010b7b6cd8 non-virtual thunk to<br class="">>> (anonymous namespace)::X86TTI::getIntImmCost(unsigned int, unsigned<br class="">>> int, llvm::APInt const&, llvm::Type*) const + 216<br class="">>> 8  clang                    0x000000010bb73333 (anonymous<br class="">>> namespace)::ConstantHoisting::collectConstantCandidates(llvm::DenseMa<br class="">>> p<br class="">>> <llvm::ConstantInt*, unsigned int,<br class="">>> llvm::DenseMapInfo<llvm::ConstantInt*> >&, llvm::Instruction*,<br class="">>> unsigned int, llvm::ConstantInt*) + 211<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>><br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/x86_64/floatdixf.c<br class="">>> 9  clang                    0x000000010bb6ecf4 (anonymous<br class="">>> namespace)::ConstantHoisting::runOnFunction(llvm::Function&) + 516<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/floatti<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> d f.c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins__x86_64/floatdixf.o<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>><br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/x86_64/floatdixf.c<br class="">>> 10 clang                    0x000000010c0e3a25<br class="">>> llvm::FPPassManager::runOnFunction(llvm::Function&) + 549<br class="">>> 11 clang                    0x000000010c0e3c9b<br class="">>> llvm::FPPassManager::runOnModule(llvm::Module&) + 43<br class="">>> 12 clang                    0x000000010c0e412a<br class="">>> llvm::legacy::PassManagerImpl::run(llvm::Module&) + 922<br class="">>> 13 clang                    0x000000010a445430<br class="">>> clang::EmitBackendOutput(clang::DiagnosticsEngine&,<br class="">>> clang::CodeGenOptions const&, clang::TargetOptions const&,<br class="">>> clang::LangOptions const&, llvm::StringRef, llvm::Module*,<br class="">>> clang::BackendAction, llvm::raw_ostream*)<br class="">>> + 12208<br class="">>> 0  clang                    0x00000001059d5259<br class="">>> llvm::sys::PrintStackTrace(__sFILE*) + 57<br class="">>> 14 clang                    0x000000010a5cda44<br class="">>> clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) +<br class="">>> 516 /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/floattidf.o<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/floattidf.c<br class="">>> 1  clang                    0x00000001059d5dab SignalHandler(int) + 347<br class="">>> 2  libsystem_platform.dylib 0x00007fff980faf1a _sigtramp + 26<br class="">>> 3  libsystem_platform.dylib 0xffffffffffffffff _sigtramp + 1743802623<br class="">>> 15 clang                    0x000000010a6864c5 4  libsystem_c.dylib<br class="">>> 0x00007fff982ccb73 clang::ParseAST(clang::Sema&, bool, bool)abort +<br class="">>> 661 +<br class="">>> 129<br class="">>><br class="">>> 5  libsystem_malloc.dylib   0x00007fff98e7b937 nano_size + 0<br class="">>> 16 clang                    0x000000010a1f2b7e<br class="">>> clang::FrontendAction::Execute() + 62<br class="">>> 6  clang                    0x000000010502f7b9 (anonymous<br class="">>> namespace)::X86TTI::getIntImmCost(llvm::APInt const&, llvm::Type*)<br class="">>> const +<br class="">>> 601<br class="">>> 17 clang                    0x000000010a1ba8d3<br class="">>> clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 915<br class="">>> 7  clang                    0x000000010502ecd8 non-virtual thunk to<br class="">>> (anonymous namespace)::X86TTI::getIntImmCost(unsigned int, unsigned<br class="">>> int, llvm::APInt const&, llvm::Type*) const + 216<br class="">>> 18 clang                    0x000000010a16a3fa<br class="">>> clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 2890<br class="">>> 8  clang                    0x00000001053eb333 (anonymous<br class="">>> namespace)::ConstantHoisting::collectConstantCandidates(llvm::DenseMa<br class="">>> p<br class="">>> <llvm::ConstantInt*, unsigned int,<br class="">>> llvm::DenseMapInfo<llvm::ConstantInt*> >&, llvm::Instruction*,<br class="">>> unsigned int, llvm::ConstantInt*) + 211<br class="">>> 19 clang                    0x000000010a16000c<br class="">>> cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1836<br class="">>> 9  clang                    0x00000001053e6cf4 (anonymous<br class="">>> namespace)::ConstantHoisting::runOnFunction(llvm::Function&) + 516<br class="">>> 20 clang                    0x000000010a168b21 main + 13745<br class="">>> 21 libdyld.dylib            0x00007fff8b4215c9 start + 1<br class="">>> 22 libdyld.dylib            0x0000000000000045 start + 1958603389<br class="">>> 10 clang                    0x000000010595ba25<br class="">>> llvm::FPPassManager::runOnFunction(llvm::Function&) + 549 Stack dump:<br class="">>> 0.          Program arguments:<br class="">>> /Users/manmanren/gmail/selfhost/Release/bin/clang<br class="">>> -cc1 -triple x86_64-apple-macosx10.4.0 -emit-obj -disable-free<br class="">>> -disable-llvm-verifier -main-file-name fixunsxfti.c -static-define<br class="">>> -mrelocation-model static -mthread-model posix -masm-verbose<br class="">>> -fforbid-guard-variables -target-cpu core2 -disable-red-zone<br class="">>> -no-implicit-float -target-linker-version 242 -dwarf-column-info<br class="">>> -coverage-file<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/fixunsxfti.o<br class="">>> -resource-dir<br class="">>> /Users/manmanren/gmail/selfhost/Release/bin/../lib/clang/3.6.0<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -D VISIBILITY_HIDDEN -D KERNEL_USE -I<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib -I<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/include -O3 -Wall<br class="">>> -Werror -fdebug-compilation-dir<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt<br class="">>> -ferror-limit 19 -fmessage-length 164 -fvisibility hidden<br class="">>> -ffreestanding -mstackrealign -fno-builtin -fblocks<br class="">>> -fblocks-runtime-optional -fno-rtti -fno-use-cxa-atexit<br class="">>> -fobjc-runtime=macosx-10.4.0 -fobjc-dispatch-method=non-legacy<br class="">>> -fencode-extended-block-signature<br class="">>> -fmax-type-align=16 -fno-common -fdiagnostics-show-option<br class="">>> -fcolor-diagnostics -vectorize-loops -vectorize-slp -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/fixunsxfti.o<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> -x c<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/fixunsxfti.c<br class="">>> 1.          <eof> parser at end of file<br class="">>> 2.          Code generation<br class="">>> 3.          Running pass 'Function Pass Manager' on module<br class="">>><br class="">>> '/Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/fixunsxfti.c'.<br class="">>> 4.          Running pass 'Constant Hoisting' on function '@__fixunsxfti'<br class="">>> 11 clang                    0x000000010595bc9b<br class="">>> llvm::FPPassManager::runOnModule(llvm::Module&) + 43<br class="">>> 12 clang                    0x000000010595c12a<br class="">>> llvm::legacy::PassManagerImpl::run(llvm::Module&) + 922<br class="">>> 13 clang                    0x0000000103cbd430<br class="">>> clang::EmitBackendOutput(clang::DiagnosticsEngine&,<br class="">>> clang::CodeGenOptions const&, clang::TargetOptions const&,<br class="">>> clang::LangOptions const&, llvm::StringRef, llvm::Module*,<br class="">>> clang::BackendAction, llvm::raw_ostream*)<br class="">>> + 12208<br class="">>> 14 clang                    0x0000000103e45a44<br class="">>> clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) + 516<br class="">>> 15 clang                    0x0000000103efe4c5<br class="">>> clang::ParseAST(clang::Sema&, bool, bool) + 661<br class="">>> 16 clang                    0x0000000103a6ab7e<br class="">>> clang::FrontendAction::Execute() + 62<br class="">>> 17 clang                    0x0000000103a328d3<br class="">>> clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 915<br class="">>> 18 clang                    0x00000001039e23fa<br class="">>> clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 2890<br class="">>> 19 clang                    0x00000001039d800c<br class="">>> cc1_main(llvm::ArrayRef<char const*>, char const*, void*) + 1836<br class="">>> 20 clang                    0x00000001039e0b21 main + 13745<br class="">>> 21 libdyld.dylib            0x00007fff8b4215c9 start + 1<br class="">>> 22 libdyld.dylib            0x0000000000000045 start + 1958603389<br class="">>> Stack dump:<br class="">>> 0.          Program arguments:<br class="">>> /Users/manmanren/gmail/selfhost/Release/bin/clang<br class="">>> -cc1 -triple x86_64-apple-macosx10.4.0 -emit-obj -disable-free<br class="">>> -disable-llvm-verifier -main-file-name fixxfti.c -static-define<br class="">>> -mrelocation-model static -mthread-model posix -masm-verbose<br class="">>> -fforbid-guard-variables -target-cpu core2 -disable-red-zone<br class="">>> -no-implicit-float -target-linker-version 242 -dwarf-column-info<br class="">>> -coverage-file<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/fixxfti.o<br class="">>> -resource-dir<br class="">>> /Users/manmanren/gmail/selfhost/Release/bin/../lib/clang/3.6.0<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -D VISIBILITY_HIDDEN -D KERNEL_USE -I<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib -I<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/include -O3 -Wall<br class="">>> -Werror -fdebug-compilation-dir<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt<br class="">>> -ferror-limit 19 -fmessage-length 164 -fvisibility hidden<br class="">>> -ffreestanding -mstackrealign -fno-builtin -fblocks<br class="">>> -fblocks-runtime-optional -fno-rtti -fno-use-cxa-atexit<br class="">>> -fobjc-runtime=macosx-10.4.0 -fobjc-dispatch-method=non-legacy<br class="">>> -fencode-extended-block-signature<br class="">>> -fmax-type-align=16 -fno-common -fdiagnostics-show-option<br class="">>> -fcolor-diagnostics -vectorize-loops -vectorize-slp -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/fixxfti.o<br class="">>> -x c<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/fixxfti.c<br class="">>> 1.          <eof> parser at end of file<br class="">>> 2.          Code generation<br class="">>> 3.          Running pass 'Function Pass Manager' on module<br class="">>> '/Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/fixxfti.c'.<br class="">>> 4.          Running pass 'Constant Hoisting' on function '@__fixxfti'<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/floatti<br class="">>> s f.c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/floattisf.o<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/floatti<br class="">>> s<br class="">>> f.c<br class="">>><br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/powidf2.<br class="">>> c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/popcountti2.o<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/popcoun<br class="">>> t ti2.c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/powidf2.o<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/powidf2.<br class="">>> c<br class="">>> clang: error: unable to execute command: Abort trap: 6<br class="">>> clang: error: clang frontend command failed due to signal (use -v to<br class="">>> see<br class="">>> invocation)<br class="">>> clang version 3.6.0 (clang-Rlto_master_build 222059) (llvm/trunk<br class="">>> 222239)<br class="">>> Target: x86_64-apple-darwin14.0.0<br class="">>> Thread model: posix<br class="">>> clang: note: diagnostic msg: PLEASE submit a bug report to<br class="">>><span class="Apple-converted-space"> </span><a href="http://llvm.org/bugs/" target="_blank" style="color: purple; text-decoration: underline;" class="">http://llvm.org/bugs/</a><span class="Apple-converted-space"> </span>and include the crash backtrace, preprocessed<br class="">>> source, and associated run script.<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/powisf2.<br class="">>> c /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/powisf2.o<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/powisf2.<br class="">>> c<br class="">>> clang: note: diagnostic msg:<br class="">>> ********************<br class="">>><br class="">>> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:<br class="">>> Preprocessed source(s) and associated run script(s) are located at:<br class="">>> clang: note: diagnostic msg:<br class="">>> /var/folders/8d/mksp0c9x6yngd578zj_s72ym0000gn/T/fixxfti-868934.c<br class="">>> clang: note: diagnostic msg:<br class="">>> /var/folders/8d/mksp0c9x6yngd578zj_s72ym0000gn/T/fixxfti-868934.sh<br class="">>> clang: note: diagnostic msg:<br class="">>><br class="">>> ********************<br class="">>>  COMPILE:   clang_darwin/cc_kext/x86_64:<br class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/powixf2.<br class="">>> c<br class="">>> make[5]: ***<br class="">>> [/Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clan<br class="">>> g _darwin/cc_kext/x86_64/SubDir.lib__builtins/fixxfti.o]<br class="">>> Error 254<br class="">>> make[5]: *** Waiting for unfinished jobs....<br class="">>> /Users/manmanren/gmail/selfhost/Release/bin/clang -fPIC<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/lib<br class="">>> -I/Users/manmanren/gmail/llvm/projects/compiler-rt/include -arch<br class="">>> x86_64 -fvisibility=hidden -DVISIBILITY_HIDDEN -mkernel -DKERNEL_USE<br class="">>> -Wall -Werror -O3 -fomit-frame-pointer -mmacosx-version-min=10.4<br class="">>> -isysroot<br class="">>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/<br class="">>> D<br class="">>> eveloper/SDKs/MacOSX10.10.sdk<br class="">>> -c -o<br class="">>> /Users/manmanren/gmail/selfhost/tools/clang/runtime/compiler-rt/clang<br class="">>> _ darwin/cc_kext/x86_64/SubDir.lib__builtins/powixf2.o<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> /Users/manmanren/gmail/llvm/projects/compiler-rt/lib/builtins/powixf2.<br class="">>> c<br class="">>> clang: error: unable to execute command: Abort trap: 6<br class="">>> clang: error: clang frontend command failed due to signal (use -v to<br class="">>> see<br class="">>> invocation)<br class="">>> clang version 3.6.0 (clang-Rlto_master_build 222059) (llvm/trunk<br class="">>> 222239)<br class="">>> Target: x86_64-apple-darwin14.0.0<br class="">>> Thread model: posix<br class="">>> clang: note: diagnostic msg: PLEASE submit a bug report to<br class="">>><span class="Apple-converted-space"> </span><a href="http://llvm.org/bugs/" target="_blank" style="color: purple; text-decoration: underline;" class="">http://llvm.org/bugs/</a><span class="Apple-converted-space"> </span>and include the crash backtrace, preprocessed<br class="">>> source, and associated run script.<br class="">>> clang: note: diagnostic msg:<br class="">>> ********************<br class="">>><br class="">>> PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:<br class="">>> Preprocessed source(s) and associated run script(s) are located at:<br class="">>> clang: note: diagnostic msg:<br class="">>> /var/folders/8d/mksp0c9x6yngd578zj_s72ym0000gn/T/fixunsxfti-33f776.c<br class="">>> clang: note: diagnostic msg:<br class="">>> /var/folders/8d/mksp0c9x6yngd578zj_s72ym0000gn/T/fixunsxfti-33f776.sh<br class="">>> clang: note: diagnostic msg:<br class="">>><br class="">>> ********************<br class="">>><br class="">>><br class="">>><br class="">>> On Nov 18, 2014, at 2:53 PM, Chad Rosier <<a href="mailto:mcrosier@codeaurora.org" target="_blank" style="color: purple; text-decoration: underline;" class="">mcrosier@codeaurora.org</a>><br class="">>> wrote:<br class="">>><br class="">>> Hi Manman,<br class="">>> Feel free to revert the patch if you're convinced this is the problem.<br class="">>> Please keep Balaram, James, and I updated on the progress.  This is a<br class="">>> performance critical fix, so we need to make sure it doesn't get lost<br class="">>> in the mix.<br class="">>><br class="">>> Chad<br class="">>><br class="">>><br class="">>> Hi Chad,<br class="">>><br class="">>> About the buildbot phase 2 failure, I now think this commit is the<br class="">>> root cause.<br class="">>><br class="">>> What I did was:<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> 1> update the repo to r222239, then "svn merge -c -r222039 .†, made<br class="">>> 1> a<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> release+assert build (installed to clang-install).<br class="">>> 2> use clang-install binary and library to build the same repo with<br class="">>> lto.<br class="">>>    make -j 4 VERBOSE=1<br class="">>> CLANG_REPOSITORY_STRING=clang-Rlto_master_build<br class="">>> SVN_REVISION=222059<br class="">>> DYLD_LIBRARY_PATH=/Users/manmanren/llvm_gmail/clang-install/lib/<br class="">>> 3> the build completed<br class="">>> make[1]: Nothing to be done for `all'.<br class="">>> make[1]: Nothing to be done for `all'.<br class="">>> llvm[0]: ***** Completed Release Build<br class="">>><br class="">>> Is it okay for us to revert this commit and watch the bot? If the bot<br class="">>> is still red, we can re-submit it.<br class="">>><br class="">>> If you want me to do more testing (maybe a lto self host with<br class="">>> r22239), let me know,<br class="">>><br class="">>> Thanks,<br class="">>> Manman (The build czar)<br class="">>><br class="">>><br class="">>> On Nov 14, 2014, at 1:09 PM, Chad Rosier <<a href="mailto:mcrosier@codeaurora.org" target="_blank" style="color: purple; text-decoration: underline;" class="">mcrosier@codeaurora.org</a>><br class="">>> wrote:<br class="">>><br class="">>> Author: mcrosier<br class="">>> Date: Fri Nov 14 15:09:13 2014<br class="">>> New Revision: 222039<br class="">>><br class="">>> URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project?rev=222039&view=rev" target="_blank" style="color: purple; text-decoration: underline;" class="">http://llvm.org/viewvc/llvm-project?rev=222039&view=rev</a><br class="">>> Log:<br class="">>> Reapply r221924: "[GVN] Perform Scalar PRE on gep indices that feed<br class="">>> loads before doing Load PRE"<br class="">>><br class="">>> This commit updates the failing test in<br class="">>> Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-mismatch.ll<br class="">>><br class="">>> The failing test is sensitive to the order in which we process loads.<br class="">>> This<br class="">>> version turns on the RPO traversal instead of the while DT traversal<br class="">>> in GVN.<br class="">>> The new test code is functionally same just the order of loads that<br class="">>> are eliminated is swapped.<br class="">>><br class="">>> This new version also fixes an issue where GVN splits a critical edge<br class="">>> and potentially invalidate the RPO/DT iterator.<br class="">>><br class="">>> Added:<br class="">>>  llvm/trunk/test/Transforms/GVN/pre-gep-load.ll<br class="">>> Modified:<br class="">>>  llvm/trunk/lib/Transforms/Scalar/GVN.cpp<br class="">>><br class="">>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-m<br class="">>> ismatch.ll<br class="">>><br class="">>> Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp<br class="">>> URL:<br class="">>><span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scala" target="_blank" style="color: purple; text-decoration: underline;" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scala</a><br class="">>> r/GVN.cpp?rev=222039&r1=222038&r2=222039&view=diff<br class="">>> ===================================================================<br class="">>> ===========<br class="">>> --- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)<br class="">>> +++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Fri Nov 14 15:09:13<br class="">>> +++ 2014<br class="">>> @@ -20,6 +20,7 @@<br class="">>> #include "llvm/ADT/DepthFirstIterator.h"<br class="">>> #include "llvm/ADT/Hashing.h"<br class="">>> #include "llvm/ADT/MapVector.h"<br class="">>> +#include "llvm/ADT/PostOrderIterator.h"<br class="">>> #include "llvm/ADT/SetVector.h"<br class="">>> #include "llvm/ADT/SmallPtrSet.h"<br class="">>> #include "llvm/ADT/Statistic.h"<br class="">>> @@ -709,6 +710,7 @@ namespace {<br class="">>>   void dump(DenseMap<uint32_t, Value*> &d);<br class="">>>   bool iterateOnFunction(Function &F);<br class="">>>   bool performPRE(Function &F);<br class="">>> +    bool performScalarPRE(Instruction *I);<br class="">>>   Value *findLeader(const BasicBlock *BB, uint32_t num);<br class="">>>   void cleanupGlobalSets();<br class="">>>   void verifyRemoved(const Instruction *I) const; @@ -1729,6<br class="">>> +1731,15 @@ bool GVN::processNonLocalLoad(LoadInst *<br class="">>>   return false;<br class="">>> }<br class="">>><br class="">>> +  // If this load follows a GEP, see if we can PRE the indices<br class="">>> + before<br class="">>> analyzing.<br class="">>> +  if (GetElementPtrInst *GEP =<br class="">>> dyn_cast<GetElementPtrInst>(LI->getOperand(0))) {<br class="">>> +    for (GetElementPtrInst::op_iterator OI = GEP->idx_begin(),<br class="">>> +                                        OE = GEP->idx_end();<br class="">>> +         OI != OE; ++OI)<br class="">>> +      if (Instruction *I = dyn_cast<Instruction>(OI->get()))<br class="">>> +        performScalarPRE(I);<br class="">>> +  }<br class="">>> +<br class="">>> // Step 2: Analyze the availability of the load  AvailValInBlkVect<br class="">>> ValuesPerBlock;  UnavailBlkVect UnavailableBlocks; @@ -2431,175<br class="">>> +2442,182 @@ bool GVN::processBlock(BasicBlock *BB) {  return<br class="">>> ChangedFunction; }<br class="">>><br class="">>> -/// performPRE - Perform a purely local form of PRE that looks for<br class="">>> diamond -/// control flow patterns and attempts to perform simple PRE<br class="">>> at the join point.<br class="">>> -bool GVN::performPRE(Function &F) {<br class="">>> -  bool Changed = false;<br class="">>> +bool GVN::performScalarPRE(Instruction *CurInst) {<br class="">>> SmallVector<std::pair<Value*, BasicBlock*>, 8> predMap;<br class="">>> -  for (BasicBlock *CurrentBlock : depth_first(&F.getEntryBlock())) {<br class="">>> -    // Nothing to PRE in the entry block.<br class="">>> -    if (CurrentBlock == &F.getEntryBlock()) continue;<br class="">>><br class="">>> -    // Don't perform PRE on a landing pad.<br class="">>> -    if (CurrentBlock->isLandingPad()) continue;<br class="">>> +  if (isa<AllocaInst>(CurInst) || isa<TerminatorInst>(CurInst) ||<br class="">>> +      isa<PHINode>(CurInst) || CurInst->getType()->isVoidTy() ||<br class="">>> +      CurInst->mayReadFromMemory() ||<br class="">>> + CurInst->mayHaveSideEffects()<br class="">>> ||<br class="">>> +      isa<DbgInfoIntrinsic>(CurInst))<br class="">>> +    return false;<br class="">>><br class="">>> -    for (BasicBlock::iterator BI = CurrentBlock->begin(),<br class="">>> -         BE = CurrentBlock->end(); BI != BE; ) {<br class="">>> -      Instruction *CurInst = BI++;<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> +  // Don't do PRE on compares. The PHI would prevent CodeGenPrepare<br class="">>> from<br class="">>> +  // sinking the compare again, and it would force the code<br class="">>> + generator<br class="">>> to<br class="">>> +  // move the i1 from processor flags or predicate registers into a<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> general<br class="">>> +  // purpose register.<br class="">>> +  if (isa<CmpInst>(CurInst))<br class="">>> +    return false;<br class="">>><br class="">>> -      if (isa<AllocaInst>(CurInst) ||<br class="">>> -          isa<TerminatorInst>(CurInst) || isa<PHINode>(CurInst) ||<br class="">>> -          CurInst->getType()->isVoidTy() ||<br class="">>> -          CurInst->mayReadFromMemory() ||<br class="">>> CurInst->mayHaveSideEffects()<br class="">>> ||<br class="">>> -          isa<DbgInfoIntrinsic>(CurInst))<br class="">>> -        continue;<br class="">>> +  // We don't currently value number ANY inline asm calls.<br class="">>> +  if (CallInst *CallI = dyn_cast<CallInst>(CurInst))<br class="">>> +    if (CallI->isInlineAsm())<br class="">>> +      return false;<br class="">>><br class="">>> -      // Don't do PRE on compares. The PHI would prevent<br class="">>> CodeGenPrepare<br class="">>> from<br class="">>> -      // sinking the compare again, and it would force the code<br class="">>> generator to<br class="">>> -      // move the i1 from processor flags or predicate registers into<br class="">>> a<br class="">>> general<br class="">>> -      // purpose register.<br class="">>> -      if (isa<CmpInst>(CurInst))<br class="">>> -        continue;<br class="">>> +  uint32_t ValNo = VN.lookup(CurInst);<br class="">>><br class="">>> -      // We don't currently value number ANY inline asm calls.<br class="">>> -      if (CallInst *CallI = dyn_cast<CallInst>(CurInst))<br class="">>> -        if (CallI->isInlineAsm())<br class="">>> -          continue;<br class="">>> +  // Look for the predecessors for PRE opportunities.  We're  //<br class="">>> + only trying to solve the basic diamond case, where  // a value is<br class="">>> + computed in the successor and one predecessor,  // but not the<br class="">>> + other.  We also explicitly disallow cases  // where the successor<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> + is its own predecessor, because they're  // more complicated to get<br class="">>> + right.<br class="">>> +  unsigned NumWith = 0;<br class="">>> +  unsigned NumWithout = 0;<br class="">>> +  BasicBlock *PREPred = nullptr;<br class="">>> +  BasicBlock *CurrentBlock = CurInst->getParent(); predMap.clear();<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> +<br class="">>> +  for (pred_iterator PI = pred_begin(CurrentBlock), PE =<br class="">>> pred_end(CurrentBlock);<br class="">>> +       PI != PE; ++PI) {<br class="">>> +    BasicBlock *P = *PI;<br class="">>> +    // We're not interested in PRE where the block is its<br class="">>> +    // own predecessor, or in blocks with predecessors<br class="">>> +    // that are not reachable.<br class="">>> +    if (P == CurrentBlock) {<br class="">>> +      NumWithout = 2;<br class="">>> +      break;<br class="">>> +    } else if (!DT->isReachableFromEntry(P)) {<br class="">>> +      NumWithout = 2;<br class="">>> +      break;<br class="">>> +    }<br class="">>><br class="">>> -      uint32_t ValNo = VN.lookup(CurInst);<br class="">>> +    Value *predV = findLeader(P, ValNo);<br class="">>> +    if (!predV) {<br class="">>> +      predMap.push_back(std::make_pair(static_cast<Value<br class="">>> + *>(nullptr),<br class="">>> P));<br class="">>> +      PREPred = P;<br class="">>> +      ++NumWithout;<br class="">>> +    } else if (predV == CurInst) {<br class="">>> +      /* CurInst dominates this predecessor. */<br class="">>> +      NumWithout = 2;<br class="">>> +      break;<br class="">>> +    } else {<br class="">>> +      predMap.push_back(std::make_pair(predV, P));<br class="">>> +      ++NumWith;<br class="">>> +    }<br class="">>> +  }<br class="">>><br class="">>> -      // Look for the predecessors for PRE opportunities.  We're<br class="">>> -      // only trying to solve the basic diamond case, where<br class="">>> -      // a value is computed in the successor and one predecessor,<br class="">>> -      // but not the other.  We also explicitly disallow cases<br class="">>> -      // where the successor is its own predecessor, because they're<br class="">>> -      // more complicated to get right.<br class="">>> -      unsigned NumWith = 0;<br class="">>> -      unsigned NumWithout = 0;<br class="">>> -      BasicBlock *PREPred = nullptr;<br class="">>> -      predMap.clear();<br class="">>> -<br class="">>> -      for (pred_iterator PI = pred_begin(CurrentBlock),<br class="">>> -           PE = pred_end(CurrentBlock); PI != PE; ++PI) {<br class="">>> -        BasicBlock *P = *PI;<br class="">>> -        // We're not interested in PRE where the block is its<br class="">>> -        // own predecessor, or in blocks with predecessors<br class="">>> -        // that are not reachable.<br class="">>> -        if (P == CurrentBlock) {<br class="">>> -          NumWithout = 2;<br class="">>> -          break;<br class="">>> -        } else if (!DT->isReachableFromEntry(P))  {<br class="">>> -          NumWithout = 2;<br class="">>> -          break;<br class="">>> -        }<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> +  // Don't do PRE when it might increase code size, i.e. when  // we<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> + would need to insert instructions in more than one pred.<br class="">>> +  if (NumWithout != 1 || NumWith == 0)<br class="">>> +    return false;<br class="">>><br class="">>> -        Value* predV = findLeader(P, ValNo);<br class="">>> -        if (!predV) {<br class="">>> -          predMap.push_back(std::make_pair(static_cast<Value<br class="">>> *>(nullptr), P));<br class="">>> -          PREPred = P;<br class="">>> -          ++NumWithout;<br class="">>> -        } else if (predV == CurInst) {<br class="">>> -          /* CurInst dominates this predecessor. */<br class="">>> -          NumWithout = 2;<br class="">>> -          break;<br class="">>> -        } else {<br class="">>> -          predMap.push_back(std::make_pair(predV, P));<br class="">>> -          ++NumWith;<br class="">>> -        }<br class="">>> -      }<br class="">>> +  // Don't do PRE across indirect branch.<br class="">>> +  if (isa<IndirectBrInst>(PREPred->getTerminator()))<br class="">>> +    return false;<br class="">>><br class="">>> -      // Don't do PRE when it might increase code size, i.e. when<br class="">>> -      // we would need to insert instructions in more than one pred.<br class="">>> -      if (NumWithout != 1 || NumWith == 0)<br class="">>> -        continue;<br class="">>> +  // We can't do PRE safely on a critical edge, so instead we<br class="">>> schedule<br class="">>> +  // the edge to be split and perform the PRE the next time we<br class="">>> iterate<br class="">>> +  // on the function.<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> +  unsigned SuccNum = GetSuccessorNumber(PREPred, CurrentBlock); if<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> + (isCriticalEdge(PREPred->getTerminator(), SuccNum)) {<br class="">>> +    toSplit.push_back(std::make_pair(PREPred->getTerminator(),<br class="">>> SuccNum));<br class="">>> +    return false;<br class="">>> +  }<br class="">>><br class="">>> -      // Don't do PRE across indirect branch.<br class="">>> -      if (isa<IndirectBrInst>(PREPred->getTerminator()))<br class="">>> -        continue;<br class="">>> +  // Instantiate the expression in the predecessor that lacked it.<br class="">>> +  // Because we are going top-down through the block, all value<br class="">>> numbers<br class="">>> +  // will be available in the predecessor by the time we need them.<br class="">>> Any<br class="">>> +  // that weren't originally present will have been instantiated<br class="">>> earlier<br class="">>> +  // in this loop.<br class="">>> +  Instruction *PREInstr = CurInst->clone();  bool success = true;<br class="">>> + for (unsigned i = 0, e = CurInst->getNumOperands(); i != e; ++i) {<br class="">>> +    Value *Op = PREInstr->getOperand(i);<br class="">>> +    if (isa<Argument>(Op) || isa<Constant>(Op) ||<br class="">>> isa<GlobalValue>(Op))<br class="">>> +      continue;<br class="">>><br class="">>> -      // We can't do PRE safely on a critical edge, so instead we<br class="">>> schedule<br class="">>> -      // the edge to be split and perform the PRE the next time we<br class="">>> iterate<br class="">>> -      // on the function.<br class="">>> -      unsigned SuccNum = GetSuccessorNumber(PREPred, CurrentBlock);<br class="">>> -      if (isCriticalEdge(PREPred->getTerminator(), SuccNum)) {<br class="">>> -        toSplit.push_back(std::make_pair(PREPred->getTerminator(),<br class="">>> SuccNum));<br class="">>> -        continue;<br class="">>> -      }<br class="">>> +    if (Value *V = findLeader(PREPred, VN.lookup(Op))) {<br class="">>> +      PREInstr->setOperand(i, V);<br class="">>> +    } else {<br class="">>> +      success = false;<br class="">>> +      break;<br class="">>> +    }<br class="">>> +  }<br class="">>><br class="">>> -      // Instantiate the expression in the predecessor that lacked<br class="">>> it.<br class="">>> -      // Because we are going top-down through the block, all value<br class="">>> numbers<br class="">>> -      // will be available in the predecessor by the time we need<br class="">>> them.<br class="">>> Any<br class="">>> -      // that weren't originally present will have been instantiated<br class="">>> earlier<br class="">>> -      // in this loop.<br class="">>> -      Instruction *PREInstr = CurInst->clone();<br class="">>> -      bool success = true;<br class="">>> -      for (unsigned i = 0, e = CurInst->getNumOperands(); i != e;<br class="">>> ++i)<br class="">>> {<br class="">>> -        Value *Op = PREInstr->getOperand(i);<br class="">>> -        if (isa<Argument>(Op) || isa<Constant>(Op) ||<br class="">>> isa<GlobalValue>(Op))<br class="">>> -          continue;<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> +  // Fail out if we encounter an operand that is not available in //<br class="">>> + the PRE predecessor.  This is typically because of loads which //<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> + are not value numbered precisely.<br class="">>> +  if (!success) {<br class="">>> +    DEBUG(verifyRemoved(PREInstr));<br class="">>> +    delete PREInstr;<br class="">>> +    return false;<br class="">>> +  }<br class="">>><br class="">>> -        if (Value *V = findLeader(PREPred, VN.lookup(Op))) {<br class="">>> -          PREInstr->setOperand(i, V);<br class="">>> -        } else {<br class="">>> -          success = false;<br class="">>> -          break;<br class="">>> -        }<br class="">>> -      }<br class="">>> +  PREInstr->insertBefore(PREPred->getTerminator());<br class="">>> +  PREInstr->setName(CurInst->getName() + ".pre");<br class="">>> + PREInstr->setDebugLoc(CurInst->getDebugLoc());<br class="">>> +  VN.add(PREInstr, ValNo);<br class="">>> +  ++NumGVNPRE;<br class="">>> +<br class="">>> +  // Update the availability map to include the new instruction.<br class="">>> +  addToLeaderTable(ValNo, PREInstr, PREPred);<br class="">>> +<br class="">>> +  // Create a PHI to make the value available in this block.<br class="">>> +  PHINode *Phi =<br class="">>> +      PHINode::Create(CurInst->getType(), predMap.size(),<br class="">>> +                      CurInst->getName() + ".pre-phi",<br class="">>> CurrentBlock->begin());<br class="">>> +  for (unsigned i = 0, e = predMap.size(); i != e; ++i) {<br class="">>> +    if (Value *V = predMap[i].first)<br class="">>> +      Phi->addIncoming(V, predMap[i].second);<br class="">>> +    else<br class="">>> +      Phi->addIncoming(PREInstr, PREPred);  }<br class="">>><br class="">>> -      // Fail out if we encounter an operand that is not available in<br class="">>> -      // the PRE predecessor.  This is typically because of loads<br class="">>> which<br class="">>> -      // are not value numbered precisely.<br class="">>> -      if (!success) {<br class="">>> -        DEBUG(verifyRemoved(PREInstr));<br class="">>> -        delete PREInstr;<br class="">>> -        continue;<br class="">>> -      }<br class="">>> +  VN.add(Phi, ValNo);<br class="">>> +  addToLeaderTable(ValNo, Phi, CurrentBlock);<br class="">>> + Phi->setDebugLoc(CurInst->getDebugLoc());<br class="">>> +  CurInst->replaceAllUsesWith(Phi);  if<br class="">>> + (Phi->getType()->getScalarType()->isPointerTy()) {<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> +    // Because we have added a PHI-use of the pointer value, it has<o:p class=""></o:p></div><div class=""><div class=""><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> now<br class="">>> +    // "escaped" from alias analysis' perspective.  We need to inform<br class="">>> +    // AA of this.<br class="">>> +    for (unsigned ii = 0, ee = Phi->getNumIncomingValues(); ii !=<br class="">>> + ee;<br class="">>> ++ii) {<br class="">>> +      unsigned jj = PHINode::getOperandNumForIncomingValue(ii);<br class="">>> +      VN.getAliasAnalysis()->addEscapingUse(Phi->getOperandUse(jj));<br class="">>> +    }<br class="">>><br class="">>> -      PREInstr->insertBefore(PREPred->getTerminator());<br class="">>> -      PREInstr->setName(CurInst->getName() + ".pre");<br class="">>> -      PREInstr->setDebugLoc(CurInst->getDebugLoc());<br class="">>> -      VN.add(PREInstr, ValNo);<br class="">>> -      ++NumGVNPRE;<br class="">>> -<br class="">>> -      // Update the availability map to include the new instruction.<br class="">>> -      addToLeaderTable(ValNo, PREInstr, PREPred);<br class="">>> -<br class="">>> -      // Create a PHI to make the value available in this block.<br class="">>> -      PHINode* Phi = PHINode::Create(CurInst->getType(),<br class="">>> predMap.size(),<br class="">>> -                                     CurInst->getName() + ".pre-phi",<br class="">>> -                                     CurrentBlock->begin());<br class="">>> -      for (unsigned i = 0, e = predMap.size(); i != e; ++i) {<br class="">>> -        if (Value *V = predMap[i].first)<br class="">>> -          Phi->addIncoming(V, predMap[i].second);<br class="">>> -        else<br class="">>> -          Phi->addIncoming(PREInstr, PREPred);<br class="">>> -      }<br class="">>> -<br class="">>> -      VN.add(Phi, ValNo);<br class="">>> -      addToLeaderTable(ValNo, Phi, CurrentBlock);<br class="">>> -      Phi->setDebugLoc(CurInst->getDebugLoc());<br class="">>> -      CurInst->replaceAllUsesWith(Phi);<br class="">>> -      if (Phi->getType()->getScalarType()->isPointerTy()) {<br class="">>> -        // Because we have added a PHI-use of the pointer value, it<br class="">>> has<br class="">>> now<br class="">>> -        // "escaped" from alias analysis' perspective.  We need to<br class="">>> inform<br class="">>> -        // AA of this.<br class="">>> -        for (unsigned ii = 0, ee = Phi->getNumIncomingValues(); ii !=<br class="">>> ee;<br class="">>> -             ++ii) {<br class="">>> -          unsigned jj = PHINode::getOperandNumForIncomingValue(ii);<br class="">>> -<br class="">>> VN.getAliasAnalysis()->addEscapingUse(Phi->getOperandUse(jj));<br class="">>> -        }<br class="">>> +    if (MD)<br class="">>> +      MD->invalidateCachedPointerInfo(Phi);<br class="">>> +  }<br class="">>> +  VN.erase(CurInst);<br class="">>> +  removeFromLeaderTable(ValNo, CurInst, CurrentBlock);<br class="">>><br class="">>> -        if (MD)<br class="">>> -          MD->invalidateCachedPointerInfo(Phi);<br class="">>> -      }<br class="">>> -      VN.erase(CurInst);<br class="">>> -      removeFromLeaderTable(ValNo, CurInst, CurrentBlock);<br class="">>> +  DEBUG(dbgs() << "GVN PRE removed: " << *CurInst << '\n');<br class="">>> +  if (MD)<br class="">>> +    MD->removeInstruction(CurInst);<br class="">>> +  DEBUG(verifyRemoved(CurInst));<br class="">>> +  CurInst->eraseFromParent();<br class="">>> +  return true;<br class="">>> +}<br class="">>> +<br class="">>> +/// performPRE - Perform a purely local form of PRE that looks for<br class="">>> diamond<o:p class=""></o:p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class="">>> +/// control flow patterns and attempts to perform simple PRE at the<o:p class=""></o:p></div><div class=""><div class=""><p class="MsoNormal" style="margin: 0in 0in 12pt; font-size: 12pt; font-family: 'Times New Roman', serif;">>> join point.<br class="">>> +bool GVN::performPRE(Function &F) {<br class="">>> +  bool Changed = false;<br class="">>> +  for (BasicBlock *CurrentBlock : depth_first(&F.getEntryBlock())) {<br class="">>> +    // Nothing to PRE in the entry block.<br class="">>> +    if (CurrentBlock == &F.getEntryBlock())<br class="">>> +      continue;<br class="">>><br class="">>> -      DEBUG(dbgs() << "GVN PRE removed: " << *CurInst << '\n');<br class="">>> -      if (MD) MD->removeInstruction(CurInst);<br class="">>> -      DEBUG(verifyRemoved(CurInst));<br class="">>> -      CurInst->eraseFromParent();<br class="">>> -      Changed = true;<br class="">>> +    // Don't perform PRE on a landing pad.<br class="">>> +    if (CurrentBlock->isLandingPad())<br class="">>> +      continue;<br class="">>> +<br class="">>> +    for (BasicBlock::iterator BI = CurrentBlock->begin(),<br class="">>> +                              BE = CurrentBlock->end();<br class="">>> +         BI != BE;) {<br class="">>> +      Instruction *CurInst = BI++;<br class="">>> +      Changed = performScalarPRE(CurInst);<br class="">>>   }<br class="">>> }<br class="">>><br class="">>> @@ -2637,25 +2655,21 @@ bool GVN::iterateOnFunction(Function &F)<br class="">>><br class="">>> // Top-down walk of the dominator tree  bool Changed = false; -#if<br class="">>> 0<br class="">>> -  // Needed for value numbering with phi construction to work.<br class="">>> -  ReversePostOrderTraversal<Function*> RPOT(&F);<br class="">>> -  for (ReversePostOrderTraversal<Function*>::rpo_iterator RI =<br class="">>> RPOT.begin(),<br class="">>> -       RE = RPOT.end(); RI != RE; ++RI)<br class="">>> -    Changed |= processBlock(*RI);<br class="">>> -#else<br class="">>> // Save the blocks this function have before transformation begins.<br class="">>> GVN may<br class="">>> // split critical edge, and hence may invalidate the RPO/DT iterator.<br class="">>> //<br class="">>> std::vector<BasicBlock *> BBVect;<br class="">>> BBVect.reserve(256);<br class="">>> -  for (DomTreeNode *X : depth_first(DT->getRootNode()))<br class="">>> -    BBVect.push_back(X->getBlock());<br class="">>> +  // Needed for value numbering with phi construction to work.<br class="">>> +  ReversePostOrderTraversal<Function *> RPOT(&F);  for<br class="">>> + (ReversePostOrderTraversal<Function *>::rpo_iterator RI =<br class="">>> RPOT.begin(),<br class="">>> +                                                           RE =<br class="">>> RPOT.end();<br class="">>> +       RI != RE; ++RI)<br class="">>> +    BBVect.push_back(*RI);<br class="">>><br class="">>> for (std::vector<BasicBlock *>::iterator I = BBVect.begin(), E =<br class="">>> BBVect.end();<br class="">>>      I != E; I++)<br class="">>>   Changed |= processBlock(*I);<br class="">>> -#endif<br class="">>><br class="">>> return Changed;<br class="">>> }<br class="">>><br class="">>> Modified:<br class="">>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-m<br class="">>> ismatch.ll<br class="">>> URL:<br class="">>><span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/TypeBa" target="_blank" style="color: purple; text-decoration: underline;" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/TypeBa</a><br class="">>> sedAliasAnalysis/gvn-nonlocal-type-mismatch.ll?rev=222039&r1=222038<br class="">>> &r2=222039&view=diff<br class="">>> ===================================================================<br class="">>> ===========<br class="">>> ---<br class="">>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-m<br class="">>> ismatch.ll<br class="">>> (original)<br class="">>> +++<br class="">>> llvm/trunk/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-m<br class="">>> ismatch.ll<br class="">>> Fri Nov 14 15:09:13 2014<br class="">>> @@ -46,12 +46,12 @@ entry:<br class="">>> br i1 %c, label %if.else, label %if.then<br class="">>><br class="">>> if.then:<br class="">>> -  %t = load i32* %p, !tbaa !4<br class="">>> +  %t = load i32* %p, !tbaa !3<br class="">>> store i32 %t, i32* %q<br class="">>> ret void<br class="">>><br class="">>> if.else:<br class="">>> -  %u = load i32* %p, !tbaa !3<br class="">>> +  %u = load i32* %p, !tbaa !4<br class="">>> store i32 %u, i32* %q<br class="">>> ret void<br class="">>> }<br class="">>> @@ -61,11 +61,11 @@ if.else:<br class="">>><br class="">>> ; CHECK: @watch_out_for_another_type_change<br class="">>> ; CHECK: if.then:<br class="">>> -; CHECK:   %t = load i32* %p<br class="">>> -; CHECK:   store i32 %t, i32* %q<br class="">>> +; CHECK:   store i32 0, i32* %q<br class="">>> ; CHECK:   ret void<br class="">>> ; CHECK: if.else:<br class="">>> -; CHECK:   store i32 0, i32* %q<br class="">>> +; CHECK:   %u = load i32* %p<br class="">>> +; CHECK:   store i32 %u, i32* %q<br class="">>><br class="">>> define void @watch_out_for_another_type_change(i1 %c, i32* %p, i32*<br class="">>> %p1,<br class="">>> i32* %q) nounwind {<br class="">>> entry:<br class="">>> @@ -74,12 +74,12 @@ entry:<br class="">>> br i1 %c, label %if.else, label %if.then<br class="">>><br class="">>> if.then:<br class="">>> -  %t = load i32* %p, !tbaa !3<br class="">>> +  %t = load i32* %p, !tbaa !4<br class="">>> store i32 %t, i32* %q<br class="">>> ret void<br class="">>><br class="">>> if.else:<br class="">>> -  %u = load i32* %p, !tbaa !4<br class="">>> +  %u = load i32* %p, !tbaa !3<br class="">>> store i32 %u, i32* %q<br class="">>> ret void<br class="">>> }<br class="">>><br class="">>> Added: llvm/trunk/test/Transforms/GVN/pre-gep-load.ll<br class="">>> URL:<br class="">>><span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/" target="_blank" style="color: purple; text-decoration: underline;" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/</a><br class="">>> pre-gep-load.ll?rev=222039&view=auto<br class="">>> ===================================================================<br class="">>> ===========<br class="">>> --- llvm/trunk/test/Transforms/GVN/pre-gep-load.ll (added)<br class="">>> +++ llvm/trunk/test/Transforms/GVN/pre-gep-load.ll Fri Nov 14<br class="">>> +++ 15:09:13<br class="">>> 2014<br class="">>> @@ -0,0 +1,49 @@<br class="">>> +; RUN: opt < %s -basicaa -gvn -enable-load-pre -S | FileCheck %s<br class="">>> +target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"<br class="">>> +target triple = "aarch64--linux-gnu"<br class="">>> +<br class="">>> +define double @foo(i32 %stat, i32 %i, double** %p) { ;<br class="">>> +CHECK-LABEL: @foo(<br class="">>> +entry:<br class="">>> +  switch i32 %stat, label %sw.default [<br class="">>> +    i32 0, label %<a href="http://sw.bb/" target="_blank" style="color: purple; text-decoration: underline;" class="">sw.bb</a><br class="">>> +    i32 1, label %<a href="http://sw.bb/" target="_blank" style="color: purple; text-decoration: underline;" class="">sw.bb</a><br class="">>> +    i32 2, label %sw.bb2<br class="">>> +  ]<br class="">>> +<br class="">>> +<a href="http://sw.bb/" target="_blank" style="color: purple; text-decoration: underline;" class="">sw.bb</a>:                                            ; preds = %entry,<br class="">>> %entry<br class="">>> +  %idxprom = sext i32 %i to i64<br class="">>> +  %arrayidx = getelementptr inbounds double** %p, i64 0<br class="">>> +  %0 = load double** %arrayidx, align 8<br class="">>> +  %arrayidx1 = getelementptr inbounds double* %0, i64 %idxprom<br class="">>> +  %1 = load double* %arrayidx1, align 8  %sub = fsub double %1,<br class="">>> + 1.000000e+00  %cmp = fcmp olt double %sub, 0.000000e+00  br i1<br class="">>> + %cmp, label %if.then, label %if.end<br class="">>> +<br class="">>> +if.then:                                          ; preds = %<a href="http://sw.bb/" target="_blank" style="color: purple; text-decoration: underline;" class="">sw.bb</a><br class="">>> +  br label %return<br class="">>> +<br class="">>> +if.end:                                           ; preds = %<a href="http://sw.bb/" target="_blank" style="color: purple; text-decoration: underline;" class="">sw.bb</a><br class="">>> +  br label %sw.bb2<br class="">>> +<br class="">>> +sw.bb2:                                           ; preds = %if.end,<br class="">>> %entry<br class="">>> +  %idxprom3 = sext i32 %i to i64<br class="">>> +  %arrayidx4 = getelementptr inbounds double** %p, i64 0<br class="">>> +  %2 = load double** %arrayidx4, align 8<br class="">>> +  %arrayidx5 = getelementptr inbounds double* %2, i64 %idxprom3<br class="">>> +  %3 = load double* %arrayidx5, align 8 ; CHECK: sw.bb2:<br class="">>> +; CHECK-NEXT-NOT: sext<br class="">>> +; CHECK-NEXT: phi double [<br class="">>> +; CHECK-NOT: load<br class="">>> +  %sub6 = fsub double 3.000000e+00, %3<br class="">>> +  br label %return<br class="">>> +<br class="">>> +sw.default:                                       ; preds = %entry<br class="">>> +  br label %return<br class="">>> +<br class="">>> +return:                                           ; preds =<br class="">>> %sw.default, %sw.bb2, %if.then<br class="">>> +  %retval.0 = phi double [ 0.000000e+00, %sw.default ], [ %sub6,<br class="">>> %sw.bb2 ], [ %sub, %if.then ]<br class="">>> +  ret double %retval.0<br class="">>> +}<br class="">>><br class="">>><br class="">>> _______________________________________________<br class="">>> llvm-commits mailing list<br class="">>><span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits@cs.uiuc.edu</a><br class="">>><span class="Apple-converted-space"> </span><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" style="color: purple; text-decoration: underline;" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>> <0001-Reapply-r221924-GVN-Perform-Scalar-PRE-on-gep-indice.patch><br class="">>><br class="">>><br class="">>><br class="">>><br class="">>> _______________________________________________<br class="">>> llvm-commits mailing list<br class="">>><span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits@cs.uiuc.edu</a><br class="">>><span class="Apple-converted-space"> </span><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" style="color: purple; text-decoration: underline;" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br class="">>><br class="">><br class="">><br class="">> _______________________________________________<br class="">> llvm-commits mailing list<br class="">><span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits@cs.uiuc.edu</a><br class="">><span class="Apple-converted-space"> </span><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" style="color: purple; text-decoration: underline;" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br class="">><br class=""><br class="">_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank" style="color: purple; text-decoration: underline;" class="">llvm-commits@cs.uiuc.edu</a><br class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" style="color: purple; text-decoration: underline;" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><o:p class=""></o:p></p></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div></div></div></div></div></div></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><o:p class=""> </o:p></div></div></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">llvm-commits mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><a href="mailto:llvm-commits@cs.uiuc.edu" class="">llvm-commits@cs.uiuc.edu</a></span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" class="">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></span></div></blockquote></div><br class=""></div></body></html>