<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Sep 6, 2019, at 3:39 PM, Alina Sbirlea <<a href="mailto:asbirlea@google.com" class="">asbirlea@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><br class="Apple-interchange-newline"><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div class="gmail_quote" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div dir="ltr" class="gmail_attr">On Fri, Sep 6, 2019 at 3:30 PM Adrian Prantl <<a href="mailto:aprantl@apple.com" class="">aprantl@apple.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Sep 6, 2019, at 3:24 PM, David Blaikie <<a href="mailto:blaikie@google.com" target="_blank" class="">blaikie@google.com</a>> wrote:</div><br class=""><div class=""><div dir="ltr" class=""><div class="">(+Apple folks who have more familiarity with optimized debug info representations that've been changing/improving lately (feel free to add more relevant folks - I haven't followed these changes as closely, so don't know who has the most suitable context here))<br class=""><br class="">In general, it's desirable for optimizations/analyses to ignore debug info intrinsics if at all possible, due to the risk/especially if not ignoring them would result in different analysis and, critically, different optimizations - there's a strong desire/goal to ensure that debug info doesn't affect the final generated code (because that would make debugging extra difficult - if you turn on debug info and it changes the optimizations/changing the program behavior/changing the bug you're trying to investigate).</div><br class=""></div></div></blockquote><div class=""><br class=""></div><div class="">I would phrase that more strongly: We consider it a bug in LLVM if the stripped executable (that was compiled with debug info) is different from the executable compiled without debug info.</div></div></div></blockquote><div class=""><br class=""></div><div class="">Excellent! I will then work on the premise that debug info should be ignored by MemorySSA. I'll work on an update in that direction.</div></div></div></blockquote><div><br class=""></div><div>I'm assuming that "ignore" means "update it to correctly reflect the transformation, but don't let it change the outcome for the non-debug-info instructions", right?</div><div><br class=""></div><div>-- adrian</div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_quote" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div class=""><br class=""></div><div class="">Alina</div><div class=""><br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class=""><div class=""><div class=""><br class=""></div><div class="">-- adrian</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 6, 2019 at 3:14 PM Alina Sbirlea <<a href="mailto:asbirlea@google.com" target="_blank" class="">asbirlea@google.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div dir="ltr" class=""><div class="">Hi Mikael,</div><div class=""><br class=""></div>Thank you for the test!<div class=""><br class=""></div><div class="">The issue with both the previous failure and this one, is that, in the absence of basicaa (-disable-basicaa), debug.value calls are treated as Defs in MemorySSA, and they're<span class="Apple-converted-space"> </span><span style="color: rgb(38, 50, 56); font-family: Roboto, sans-serif; font-size: 13px;" class="">non-memory touching instructions otherwise. So there are a lot of places where we don't update MemorySSA when debug.value calls are added or removed, because this wasn't necessary in the regular scenarios.</span></div><div class=""><font color="#263238" face="Roboto, sans-serif" class=""><br class=""></font></div><div class=""><font color="#263238" face="Roboto, sans-serif" class="">For the crash.ll above, I sent out a patch that will solve it (</font><span id="gmail-m_-3749078218486099554gmail-m_-164500357560171084gmail-docs-internal-guid-0811e2fd-7fff-8a87-116b-fc0d5aa22369" class=""><span style="text-decoration-line: underline; font-family: Arial; font-variant-numeric: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;" class=""><a href="https://reviews.llvm.org/D67296" target="_blank" style="text-decoration-line: none;" class="">D67296</a>)</span></span>, but this is an issue that needs addressing further.</div>e.g. insertDebugValuesForPHIs can add debug.value calls and does not currently update MSSA.<div class="">If we use -disable-basicaa, you're bound to hit an assertion at some point, because we don't update MSSA in there to add a new Def.<div class="">Conversely, if you use  -basicaa and try to create a new access for the cloned debug.value calls, you'll hit an assertion because that's a non-memory touching instruction.</div><div class=""><br class=""></div><div class="">An option to mitigate the two, is to special case debug info calls when creating accesses in MSSA, and, regardless of AA's answer, do not consider debug calls as memory touching. Similarly, when verifying MSSA, to bypass these intrinsics.<br class=""><div class=""><div class=""><br class=""></div></div></div><div class="">+CC some folks who have more background and may have more to add on the subject.<br class=""></div><div class=""><br class=""></div><div class="">Alina</div></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 6, 2019 at 1:49 AM Mikael Holmén <<a href="mailto:mikael.holmen@ericsson.com" target="_blank" class="">mikael.holmen@ericsson.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;">Hi again,<br class=""><br class="">Unfortunately, after some more testing I've stumbled upon this<br class="">assertion instead:<br class=""><br class="">opt: ../lib/Analysis/MemorySSAUpdater.cpp:1078: void<br class="">llvm::MemorySSAUpdater::applyInsertUpdates(ArrayRef<llvm::CFGUpdate>,<br class="">llvm::DominatorTree &, const GraphDiff<llvm::BasicBlock *> *):<br class="">Assertion `IDom && "Block must have a valid IDom."' failed.<br class=""><br class="">when I run:<br class=""><br class=""> opt -S -o - crash.ll -disable-basicaa -loop-rotate<br class=""><br class="">/Mikael<br class=""><br class="">On Fri, 2019-09-06 at 09:41 +0200, Mikael Holmén wrote:<br class="">> Hi,<br class="">><span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><br class="">> On Thu, 2019-09-05 at 09:25 -0700, Alina Sbirlea wrote:<br class="">> > Hi Mikael,<br class="">> ><span class="Apple-converted-space"> </span><br class="">> > Thank you for reporting this issue.<br class="">> > The issue appears to be that two calls to @llvm.dbg.value are<br class="">> > merged<br class="">> > into one when merging two blocks and MSSA is not "told" that an<br class="">> > access is removed.<br class="">> > Checked in the fix in r371084.<br class="">> ><span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><br class="">> Great! The crashes seems to be gone with the fix.<br class="">><span class="Apple-converted-space"> </span><br class="">> Thank you,<br class="">> Mikael<br class="">><span class="Apple-converted-space"> </span><br class="">> > Thanks,<br class="">> > Alina<br class="">> ><span class="Apple-converted-space"> </span><br class="">> ><span class="Apple-converted-space"> </span><br class="">> > On Thu, Sep 5, 2019 at 3:00 AM Mikael Holmén <<br class="">> ><span class="Apple-converted-space"> </span><a href="mailto:mikael.holmen@ericsson.com" target="_blank" class="">mikael.holmen@ericsson.com</a>> wrote:<br class="">> > > Hi Alina,<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > We're seeing this failed assertion with this patch:<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > opt: ../lib/Analysis/MemorySSA.cpp:1983: void<br class="">> > > llvm::MemorySSA::verifyOrdering(llvm::Function &) const:<br class="">> > > Assertion<br class="">> > > `AL-<br class="">> > > > size() == ActualAccesses.size() && "We don't have the same<br class="">> > > > number<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > of<br class="">> > > accesses in the block as on the " "access list"' failed.<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > when we do<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > opt -S -o - mem.ll -disable-basicaa -loop-rotate<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > Just looking quickly in the debugger I see<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > (gdb) p AL->size()<br class="">> > > $1 = 4<br class="">> > > (gdb) p ActualAccesses.size()<br class="">> > > $2 = 3<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > I originally found this running fuzz tests with random comiler<br class="">> > > flags<br class="">> > > for my out-of-tree target, then I've bugpoint reduced the input<br class="">> > > and<br class="">> > > tried to reproduce it on trunk as well, so the input might be<br class="">> > > weird,<br class="">> > > but hopefully it's possible to make something out of it anyway.<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > /Mikael<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > On Wed, 2019-09-04 at 19:16 +0000, Alina Sbirlea via llvm-commits<br class="">> > > wrote:<br class="">> > > > Author: asbirlea<br class="">> > > > Date: Wed Sep  4 12:16:04 2019<br class="">> > > > New Revision: 370957<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > URL:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=118d60b4-4d07aa6a-118d202f-86823e270a62-c84f23bab7bb3f2b&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%3Frev%3D370957%26view%3Drev" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=118d60b4-4d07aa6a-118d202f-86823e270a62-c84f23bab7bb3f2b&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%3Frev%3D370957%26view%3Drev</a><br class="">> > > > Log:<br class="">> > > > [MemorySSA] Re-enable MemorySSA use.<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Differential Revision:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=61626bbe-3de8a160-61622b25-86823e270a62-8eda56b83091d815&q=1&u=https%3A%2F%2Freviews.llvm.org%2FD58311" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=61626bbe-3de8a160-61622b25-86823e270a62-8eda56b83091d815&q=1&u=https%3A%2F%2Freviews.llvm.org%2FD58311</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Modified:<br class="">> > > >     llvm/trunk/lib/Analysis/MemorySSA.cpp<br class="">> > > >     llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp<br class="">> > > >     llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll<br class="">> > > >     llvm/trunk/test/Other/opt-O2-pipeline.ll<br class="">> > > >     llvm/trunk/test/Other/opt-O3-pipeline.ll<br class="">> > > >     llvm/trunk/test/Other/opt-Os-pipeline.ll<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Modified: llvm/trunk/lib/Analysis/MemorySSA.cpp<br class="">> > > > URL:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=4d59b454-11d37e8a-4d59f4cf-86823e270a62-7a9a9b9527ff7f99&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Flib%2FAnalysis%2FMemorySSA.cpp%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=4d59b454-11d37e8a-4d59f4cf-86823e270a62-7a9a9b9527ff7f99&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Flib%2FAnalysis%2FMemorySSA.cpp%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > =================================================================<br class="">> > > ==<br class="">> > > ==<br class="">> > > > =========<br class="">> > > > --- llvm/trunk/lib/Analysis/MemorySSA.cpp (original)<br class="">> > > > +++ llvm/trunk/lib/Analysis/MemorySSA.cpp Wed Sep  4 12:16:04<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > 2019<br class="">> > > > @@ -84,7 +84,7 @@ bool llvm::VerifyMemorySSA = false;<br class="">> > > >  #endif<br class="">> > > >  /// Enables memory ssa as a dependency for loop passes in<br class="">> > > > legacy<br class="">> > > > pass manager.<br class="">> > > >  cl::opt<bool> llvm::EnableMSSALoopDependency(<br class="">> > > > -    "enable-mssa-loop-dependency", cl::Hidden,<br class="">> > > > cl::init(false),<br class="">> > > > +    "enable-mssa-loop-dependency", cl::Hidden, cl::init(true),<br class="">> > > >      cl::desc("Enable MemorySSA dependency for loop pass<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > manager"));<br class="">> > > > <span class="Apple-converted-space"> </span><br class="">> > > >  static cl::opt<bool, true><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Modified: llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp<br class="">> > > > URL:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=82f40532-de7ecfec-82f445a9-86823e270a62-31d7364f85f60f93&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Flib%2FTransforms%2FUtils%2FLoopUtils.cpp%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=82f40532-de7ecfec-82f445a9-86823e270a62-31d7364f85f60f93&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Flib%2FTransforms%2FUtils%2FLoopUtils.cpp%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > =================================================================<br class="">> > > ==<br class="">> > > ==<br class="">> > > > =========<br class="">> > > > --- llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp (original)<br class="">> > > > +++ llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp Wed Sep  4<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > 12:16:04<br class="">> > > > 2019<br class="">> > > > @@ -19,6 +19,7 @@<br class="">> > > >  #include "llvm/Analysis/InstructionSimplify.h"<br class="">> > > >  #include "llvm/Analysis/LoopInfo.h"<br class="">> > > >  #include "llvm/Analysis/LoopPass.h"<br class="">> > > > +#include "llvm/Analysis/MemorySSA.h"<br class="">> > > >  #include "llvm/Analysis/MemorySSAUpdater.h"<br class="">> > > >  #include "llvm/Analysis/MustExecute.h"<br class="">> > > >  #include "llvm/Analysis/ScalarEvolution.h"<br class="">> > > > @@ -170,6 +171,8 @@ void llvm::getLoopAnalysisUsage(Analysis<br class="">> > > >    AU.addPreserved<SCEVAAWrapperPass>();<br class="">> > > >    AU.addRequired<ScalarEvolutionWrapperPass>();<br class="">> > > >    AU.addPreserved<ScalarEvolutionWrapperPass>();<br class="">> > > > +  // FIXME: When all loop passes preserve MemorySSA, it can be<br class="">> > > > required and<br class="">> > > > +  // preserved here instead of the individual handling in each<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > pass.<br class="">> > > >  }<br class="">> > > > <span class="Apple-converted-space"> </span><br class="">> > > >  /// Manually defined generic "LoopPass" dependency<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > initialization.<br class="">> > > > This is used<br class="">> > > > @@ -190,6 +193,7 @@ void llvm::initializeLoopPassPass(PassRe<br class="">> > > >    INITIALIZE_PASS_DEPENDENCY(GlobalsAAWrapperPass)<br class="">> > > >    INITIALIZE_PASS_DEPENDENCY(SCEVAAWrapperPass)<br class="">> > > >    INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass)<br class="">> > > > +  INITIALIZE_PASS_DEPENDENCY(MemorySSAWrapperPass)<br class="">> > > >  }<br class="">> > > > <span class="Apple-converted-space"> </span><br class="">> > > >  /// Create MDNode for input string.<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Modified: llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll<br class="">> > > > URL:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=0057ee6d-5cdd24b3-0057aef6-86823e270a62-8405017b45a891b5&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FCodeGen%2FPowerPC%2Fsms-grp-order.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=0057ee6d-5cdd24b3-0057aef6-86823e270a62-8405017b45a891b5&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FCodeGen%2FPowerPC%2Fsms-grp-order.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > =================================================================<br class="">> > > ==<br class="">> > > ==<br class="">> > > > =========<br class="">> > > > --- llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll (original)<br class="">> > > > +++ llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll Wed Sep  4<br class="">> > > > 12:16:04 2019<br class="">> > > > @@ -4,25 +4,24 @@<br class="">> > > > <span class="Apple-converted-space"> </span><br class="">> > > >  define void @lame_encode_buffer_interleaved()<br class="">> > > > local_unnamed_addr<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > {<br class="">> > > >  ; CHECK-LABEL: lame_encode_buffer_interleaved:<br class="">> > > > -; CHECK:       # %bb.0:<br class="">> > > > -; CHECK-NEXT:    lhz 3, 0(0)<br class="">> > > > -; CHECK-NEXT:    li 5, 1<br class="">> > > > -; CHECK-NEXT:    sldi 5, 5, 62<br class="">> > > > -; CHECK-NEXT:    lhz 4, 0(3)<br class="">> > > > -; CHECK-NEXT:    mtctr 5<br class="">> > > > -; CHECK-NEXT:    .p2align 5<br class="">> > > > -; CHECK-NEXT:  .LBB0_1: #<br class="">> > > > -; CHECK-NEXT:    extsh 3, 3<br class="">> > > > -; CHECK-NEXT:    extsh 4, 4<br class="">> > > > -; CHECK-NEXT:    srawi 3, 3, 1<br class="">> > > > -; CHECK-NEXT:    addze 3, 3<br class="">> > > > -; CHECK-NEXT:    srawi 4, 4, 1<br class="">> > > > -; CHECK-NEXT:    addze 4, 4<br class="">> > > > -; CHECK-NEXT:    bdnz .LBB0_1<br class="">> > > > -; CHECK-NEXT:  # %bb.2:<br class="">> > > > -; CHECK-NEXT:    sth 3, 0(0)<br class="">> > > > -; CHECK-NEXT:    sth 4, 0(3)<br class="">> > > > -; CHECK-NEXT:    blr<br class="">> > > > +; CHECK:      # %bb.0:<br class="">> > > > +; CHECK-NEXT:   lha 3, 0(3)<br class="">> > > > +; CHECK-NEXT:   li 5, 1<br class="">> > > > +; CHECK-NEXT:   sldi 5, 5, 62<br class="">> > > > +; CHECK-NEXT:   lhz 4, 0(0)<br class="">> > > > +; CHECK-NEXT:   mtctr 5<br class="">> > > > +; CHECK-NEXT:   srawi 3, 3, 1<br class="">> > > > +; CHECK-NEXT:   addze 3, 3<br class="">> > > > +; CHECK-NEXT:   .p2align 4<br class="">> > > > +; CHECK-NEXT: .LBB0_1:<br class="">> > > > +; CHECK-NEXT:   extsh 4, 4<br class="">> > > > +; CHECK-NEXT:   srawi 4, 4, 1<br class="">> > > > +; CHECK-NEXT:   addze 4, 4<br class="">> > > > +; CHECK-NEXT:   bdnz .LBB0_1<br class="">> > > > +; CHECK-NEXT: # %bb.2:<br class="">> > > > +; CHECK-NEXT:   sth 4, 0(0)<br class="">> > > > +; CHECK-NEXT:   sth 3, 0(3)<br class="">> > > > +; CHECK-NEXT:   blr<br class="">> > > >    br label %1<br class="">> > > > <span class="Apple-converted-space"> </span><br class="">> > > >  1:                                                ; preds =<br class="">> > > > %1,<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > %0<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Modified: llvm/trunk/test/Other/opt-O2-pipeline.ll<br class="">> > > > URL:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=9b0187ad-c78b4d73-9b01c736-86823e270a62-3cdb18bf2d8c50f7&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FOther%2Fopt-O2-pipeline.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=9b0187ad-c78b4d73-9b01c736-86823e270a62-3cdb18bf2d8c50f7&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FOther%2Fopt-O2-pipeline.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > =================================================================<br class="">> > > ==<br class="">> > > ==<br class="">> > > > =========<br class="">> > > > --- llvm/trunk/test/Other/opt-O2-pipeline.ll (original)<br class="">> > > > +++ llvm/trunk/test/Other/opt-O2-pipeline.ll Wed Sep  4<br class="">> > > > 12:16:04<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > 2019<br class="">> > > > @@ -93,12 +93,13 @@<br class="">> > > >  ; CHECK-NEXT:         Simplify the CFG<br class="">> > > >  ; CHECK-NEXT:         Reassociate expressions<br class="">> > > >  ; CHECK-NEXT:         Dominator Tree Construction<br class="">> > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:         Memory SSA<br class="">> > > >  ; CHECK-NEXT:         Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:         Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:         LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:         Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:         Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:           Rotate Loops<br class="">> > > > @@ -153,12 +154,13 @@<br class="">> > > >  ; CHECK-NEXT:         Phi Values Analysis<br class="">> > > >  ; CHECK-NEXT:         Memory Dependence Analysis<br class="">> > > >  ; CHECK-NEXT:         Dead Store Elimination<br class="">> > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:         Memory SSA<br class="">> > > >  ; CHECK-NEXT:         Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:         Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:         LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:         Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:         Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:           Loop Invariant Code Motion<br class="">> > > > @@ -185,12 +187,13 @@<br class="">> > > >  ; CHECK-NEXT:     FunctionPass Manager<br class="">> > > >  ; CHECK-NEXT:       Float to int<br class="">> > > >  ; CHECK-NEXT:       Dominator Tree Construction<br class="">> > > > +; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:       Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:       Memory SSA<br class="">> > > >  ; CHECK-NEXT:       Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:       Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:       LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:       Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:       Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:       Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:         Rotate Loops<br class="">> > > > @@ -246,6 +249,7 @@<br class="">> > > >  ; CHECK-NEXT:       Lazy Block Frequency Analysis<br class="">> > > >  ; CHECK-NEXT:       Optimization Remark Emitter<br class="">> > > >  ; CHECK-NEXT:       Combine redundant instructions<br class="">> > > > +; CHECK-NEXT:       Memory SSA<br class="">> > > >  ; CHECK-NEXT:       Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:       LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Modified: llvm/trunk/test/Other/opt-O3-pipeline.ll<br class="">> > > > URL:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=394f545b-65c59e85-394f14c0-86823e270a62-0bf04c74db73c9df&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FOther%2Fopt-O3-pipeline.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=394f545b-65c59e85-394f14c0-86823e270a62-0bf04c74db73c9df&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FOther%2Fopt-O3-pipeline.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > =================================================================<br class="">> > > ==<br class="">> > > ==<br class="">> > > > =========<br class="">> > > > --- llvm/trunk/test/Other/opt-O3-pipeline.ll (original)<br class="">> > > > +++ llvm/trunk/test/Other/opt-O3-pipeline.ll Wed Sep  4<br class="">> > > > 12:16:04<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > 2019<br class="">> > > > @@ -98,12 +98,13 @@<br class="">> > > >  ; CHECK-NEXT:         Simplify the CFG<br class="">> > > >  ; CHECK-NEXT:         Reassociate expressions<br class="">> > > >  ; CHECK-NEXT:         Dominator Tree Construction<br class="">> > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:         Memory SSA<br class="">> > > >  ; CHECK-NEXT:         Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:         Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:         LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:         Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:         Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:           Rotate Loops<br class="">> > > > @@ -158,12 +159,13 @@<br class="">> > > >  ; CHECK-NEXT:         Phi Values Analysis<br class="">> > > >  ; CHECK-NEXT:         Memory Dependence Analysis<br class="">> > > >  ; CHECK-NEXT:         Dead Store Elimination<br class="">> > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:         Memory SSA<br class="">> > > >  ; CHECK-NEXT:         Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:         Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:         LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:         Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:         Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:           Loop Invariant Code Motion<br class="">> > > > @@ -190,12 +192,13 @@<br class="">> > > >  ; CHECK-NEXT:     FunctionPass Manager<br class="">> > > >  ; CHECK-NEXT:       Float to int<br class="">> > > >  ; CHECK-NEXT:       Dominator Tree Construction<br class="">> > > > +; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:       Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:       Memory SSA<br class="">> > > >  ; CHECK-NEXT:       Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:       Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:       LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:       Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:       Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:       Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:         Rotate Loops<br class="">> > > > @@ -251,6 +254,7 @@<br class="">> > > >  ; CHECK-NEXT:       Lazy Block Frequency Analysis<br class="">> > > >  ; CHECK-NEXT:       Optimization Remark Emitter<br class="">> > > >  ; CHECK-NEXT:       Combine redundant instructions<br class="">> > > > +; CHECK-NEXT:       Memory SSA<br class="">> > > >  ; CHECK-NEXT:       Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:       LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > Modified: llvm/trunk/test/Other/opt-Os-pipeline.ll<br class="">> > > > URL:<span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=01c3e0a1-5d492a7f-01c3a03a-86823e270a62-da433cbe7321f7ab&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FOther%2Fopt-Os-pipeline.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=01c3e0a1-5d492a7f-01c3a03a-86823e270a62-da433cbe7321f7ab&q=1&u=http%3A%2F%2Fllvm.org%2Fviewvc%2Fllvm-project%2Fllvm%2Ftrunk%2Ftest%2FOther%2Fopt-Os-pipeline.ll%3Frev%3D370957%26r1%3D370956%26r2%3D370957%26view%3Ddiff</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > =================================================================<br class="">> > > ==<br class="">> > > ==<br class="">> > > > =========<br class="">> > > > --- llvm/trunk/test/Other/opt-Os-pipeline.ll (original)<br class="">> > > > +++ llvm/trunk/test/Other/opt-Os-pipeline.ll Wed Sep  4<br class="">> > > > 12:16:04<br class="">> > ><span class="Apple-converted-space"> </span><br class="">> > > 2019<br class="">> > > > @@ -80,12 +80,13 @@<br class="">> > > >  ; CHECK-NEXT:         Simplify the CFG<br class="">> > > >  ; CHECK-NEXT:         Reassociate expressions<br class="">> > > >  ; CHECK-NEXT:         Dominator Tree Construction<br class="">> > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:         Memory SSA<br class="">> > > >  ; CHECK-NEXT:         Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:         Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:         LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:         Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:         Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:           Rotate Loops<br class="">> > > > @@ -140,12 +141,13 @@<br class="">> > > >  ; CHECK-NEXT:         Phi Values Analysis<br class="">> > > >  ; CHECK-NEXT:         Memory Dependence Analysis<br class="">> > > >  ; CHECK-NEXT:         Dead Store Elimination<br class="">> > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:         Memory SSA<br class="">> > > >  ; CHECK-NEXT:         Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:         Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:         LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:         Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:         Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:         Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:           Loop Invariant Code Motion<br class="">> > > > @@ -172,12 +174,13 @@<br class="">> > > >  ; CHECK-NEXT:     FunctionPass Manager<br class="">> > > >  ; CHECK-NEXT:       Float to int<br class="">> > > >  ; CHECK-NEXT:       Dominator Tree Construction<br class="">> > > > +; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)<br class="">> > > > +; CHECK-NEXT:       Function Alias Analysis Results<br class="">> > > > +; CHECK-NEXT:       Memory SSA<br class="">> > > >  ; CHECK-NEXT:       Natural Loop Information<br class="">> > > >  ; CHECK-NEXT:       Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:       LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass<br class="">> > > > -; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)<br class="">> > > > -; CHECK-NEXT:       Function Alias Analysis Results<br class="">> > > >  ; CHECK-NEXT:       Scalar Evolution Analysis<br class="">> > > >  ; CHECK-NEXT:       Loop Pass Manager<br class="">> > > >  ; CHECK-NEXT:         Rotate Loops<br class="">> > > > @@ -233,6 +236,7 @@<br class="">> > > >  ; CHECK-NEXT:       Lazy Block Frequency Analysis<br class="">> > > >  ; CHECK-NEXT:       Optimization Remark Emitter<br class="">> > > >  ; CHECK-NEXT:       Combine redundant instructions<br class="">> > > > +; CHECK-NEXT:       Memory SSA<br class="">> > > >  ; CHECK-NEXT:       Canonicalize natural loops<br class="">> > > >  ; CHECK-NEXT:       LCSSA Verifier<br class="">> > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass<br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">> > > > _______________________________________________<br class="">> > > > llvm-commits mailing list<br class="">> > > ><span class="Apple-converted-space"> </span><a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a><br class="">> > > ><span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><br class="">><span class="Apple-converted-space"> </span><br class=""><a href="https://protect2.fireeye.com/url?k=613081b5-3dba4b6b-6130c12e-86823e270a62-3b9ac07604e9c962&q=1&u=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-commits" rel="noreferrer" target="_blank" class="">https://protect2.fireeye.com/url?k=613081b5-3dba4b6b-6130c12e-86823e270a62-3b9ac07604e9c962&q=1&u=https%3A%2F%2Flists.llvm.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fllvm-commits</a></blockquote></div></blockquote></div></div></div></blockquote></div></div></blockquote></div></div></blockquote></div><br class=""></body></html>