[llvm] r370957 - [MemorySSA] Re-enable MemorySSA use.

Alina Sbirlea via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 6 15:39:25 PDT 2019


On Fri, Sep 6, 2019 at 3:30 PM Adrian Prantl <aprantl at apple.com> wrote:

>
>
> On Sep 6, 2019, at 3:24 PM, David Blaikie <blaikie at google.com> wrote:
>
> (+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))
>
> 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).
>
>
> 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.
>

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.

Alina


> -- adrian
>
> On Fri, Sep 6, 2019 at 3:14 PM Alina Sbirlea <asbirlea at google.com> wrote:
>
>> Hi Mikael,
>>
>> Thank you for the test!
>>
>> 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 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.
>>
>> For the crash.ll above, I sent out a patch that will solve it (D67296
>> <https://reviews.llvm.org/D67296>), but this is an issue that needs
>> addressing further.
>> e.g. insertDebugValuesForPHIs can add debug.value calls and does not
>> currently update MSSA.
>> 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.
>> 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.
>>
>> 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.
>>
>> +CC some folks who have more background and may have more to add on the
>> subject.
>>
>> Alina
>>
>> On Fri, Sep 6, 2019 at 1:49 AM Mikael Holmén <mikael.holmen at ericsson.com>
>> wrote:
>>
>>> Hi again,
>>>
>>> Unfortunately, after some more testing I've stumbled upon this
>>> assertion instead:
>>>
>>> opt: ../lib/Analysis/MemorySSAUpdater.cpp:1078: void
>>> llvm::MemorySSAUpdater::applyInsertUpdates(ArrayRef<llvm::CFGUpdate>,
>>> llvm::DominatorTree &, const GraphDiff<llvm::BasicBlock *> *):
>>> Assertion `IDom && "Block must have a valid IDom."' failed.
>>>
>>> when I run:
>>>
>>>  opt -S -o - crash.ll -disable-basicaa -loop-rotate
>>>
>>> /Mikael
>>>
>>> On Fri, 2019-09-06 at 09:41 +0200, Mikael Holmén wrote:
>>> > Hi,
>>> >
>>> >
>>> > On Thu, 2019-09-05 at 09:25 -0700, Alina Sbirlea wrote:
>>> > > Hi Mikael,
>>> > >
>>> > > Thank you for reporting this issue.
>>> > > The issue appears to be that two calls to @llvm.dbg.value are
>>> > > merged
>>> > > into one when merging two blocks and MSSA is not "told" that an
>>> > > access is removed.
>>> > > Checked in the fix in r371084.
>>> > >
>>> >
>>> > Great! The crashes seems to be gone with the fix.
>>> >
>>> > Thank you,
>>> > Mikael
>>> >
>>> > > Thanks,
>>> > > Alina
>>> > >
>>> > >
>>> > > On Thu, Sep 5, 2019 at 3:00 AM Mikael Holmén <
>>> > > mikael.holmen at ericsson.com> wrote:
>>> > > > Hi Alina,
>>> > > >
>>> > > > We're seeing this failed assertion with this patch:
>>> > > >
>>> > > > opt: ../lib/Analysis/MemorySSA.cpp:1983: void
>>> > > > llvm::MemorySSA::verifyOrdering(llvm::Function &) const:
>>> > > > Assertion
>>> > > > `AL-
>>> > > > > size() == ActualAccesses.size() && "We don't have the same
>>> > > > > number
>>> > > >
>>> > > > of
>>> > > > accesses in the block as on the " "access list"' failed.
>>> > > >
>>> > > > when we do
>>> > > >
>>> > > > opt -S -o - mem.ll -disable-basicaa -loop-rotate
>>> > > >
>>> > > > Just looking quickly in the debugger I see
>>> > > >
>>> > > > (gdb) p AL->size()
>>> > > > $1 = 4
>>> > > > (gdb) p ActualAccesses.size()
>>> > > > $2 = 3
>>> > > >
>>> > > > I originally found this running fuzz tests with random comiler
>>> > > > flags
>>> > > > for my out-of-tree target, then I've bugpoint reduced the input
>>> > > > and
>>> > > > tried to reproduce it on trunk as well, so the input might be
>>> > > > weird,
>>> > > > but hopefully it's possible to make something out of it anyway.
>>> > > >
>>> > > > /Mikael
>>> > > >
>>> > > >
>>> > > > On Wed, 2019-09-04 at 19:16 +0000, Alina Sbirlea via llvm-commits
>>> > > > wrote:
>>> > > > > Author: asbirlea
>>> > > > > Date: Wed Sep  4 12:16:04 2019
>>> > > > > New Revision: 370957
>>> > > > >
>>> > > > > URL:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> 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
>>> > > > > Log:
>>> > > > > [MemorySSA] Re-enable MemorySSA use.
>>> > > > >
>>> > > > > Differential Revision:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> https://protect2.fireeye.com/url?k=61626bbe-3de8a160-61622b25-86823e270a62-8eda56b83091d815&q=1&u=https%3A%2F%2Freviews.llvm.org%2FD58311
>>> > > > >
>>> > > > > Modified:
>>> > > > >     llvm/trunk/lib/Analysis/MemorySSA.cpp
>>> > > > >     llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp
>>> > > > >     llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll
>>> > > > >     llvm/trunk/test/Other/opt-O2-pipeline.ll
>>> > > > >     llvm/trunk/test/Other/opt-O3-pipeline.ll
>>> > > > >     llvm/trunk/test/Other/opt-Os-pipeline.ll
>>> > > > >
>>> > > > > Modified: llvm/trunk/lib/Analysis/MemorySSA.cpp
>>> > > > > URL:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> 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
>>> > > > >
>>> > > >
>>> > > > =================================================================
>>> > > > ==
>>> > > > ==
>>> > > > > =========
>>> > > > > --- llvm/trunk/lib/Analysis/MemorySSA.cpp (original)
>>> > > > > +++ llvm/trunk/lib/Analysis/MemorySSA.cpp Wed Sep  4 12:16:04
>>> > > >
>>> > > > 2019
>>> > > > > @@ -84,7 +84,7 @@ bool llvm::VerifyMemorySSA = false;
>>> > > > >  #endif
>>> > > > >  /// Enables memory ssa as a dependency for loop passes in
>>> > > > > legacy
>>> > > > > pass manager.
>>> > > > >  cl::opt<bool> llvm::EnableMSSALoopDependency(
>>> > > > > -    "enable-mssa-loop-dependency", cl::Hidden,
>>> > > > > cl::init(false),
>>> > > > > +    "enable-mssa-loop-dependency", cl::Hidden, cl::init(true),
>>> > > > >      cl::desc("Enable MemorySSA dependency for loop pass
>>> > > >
>>> > > > manager"));
>>> > > > >
>>> > > > >  static cl::opt<bool, true>
>>> > > > >
>>> > > > > Modified: llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp
>>> > > > > URL:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> 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
>>> > > > >
>>> > > >
>>> > > > =================================================================
>>> > > > ==
>>> > > > ==
>>> > > > > =========
>>> > > > > --- llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp (original)
>>> > > > > +++ llvm/trunk/lib/Transforms/Utils/LoopUtils.cpp Wed Sep  4
>>> > > >
>>> > > > 12:16:04
>>> > > > > 2019
>>> > > > > @@ -19,6 +19,7 @@
>>> > > > >  #include "llvm/Analysis/InstructionSimplify.h"
>>> > > > >  #include "llvm/Analysis/LoopInfo.h"
>>> > > > >  #include "llvm/Analysis/LoopPass.h"
>>> > > > > +#include "llvm/Analysis/MemorySSA.h"
>>> > > > >  #include "llvm/Analysis/MemorySSAUpdater.h"
>>> > > > >  #include "llvm/Analysis/MustExecute.h"
>>> > > > >  #include "llvm/Analysis/ScalarEvolution.h"
>>> > > > > @@ -170,6 +171,8 @@ void llvm::getLoopAnalysisUsage(Analysis
>>> > > > >    AU.addPreserved<SCEVAAWrapperPass>();
>>> > > > >    AU.addRequired<ScalarEvolutionWrapperPass>();
>>> > > > >    AU.addPreserved<ScalarEvolutionWrapperPass>();
>>> > > > > +  // FIXME: When all loop passes preserve MemorySSA, it can be
>>> > > > > required and
>>> > > > > +  // preserved here instead of the individual handling in each
>>> > > >
>>> > > > pass.
>>> > > > >  }
>>> > > > >
>>> > > > >  /// Manually defined generic "LoopPass" dependency
>>> > > >
>>> > > > initialization.
>>> > > > > This is used
>>> > > > > @@ -190,6 +193,7 @@ void llvm::initializeLoopPassPass(PassRe
>>> > > > >    INITIALIZE_PASS_DEPENDENCY(GlobalsAAWrapperPass)
>>> > > > >    INITIALIZE_PASS_DEPENDENCY(SCEVAAWrapperPass)
>>> > > > >    INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass)
>>> > > > > +  INITIALIZE_PASS_DEPENDENCY(MemorySSAWrapperPass)
>>> > > > >  }
>>> > > > >
>>> > > > >  /// Create MDNode for input string.
>>> > > > >
>>> > > > > Modified: llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll
>>> > > > > URL:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> 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
>>> > > > >
>>> > > >
>>> > > > =================================================================
>>> > > > ==
>>> > > > ==
>>> > > > > =========
>>> > > > > --- llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll (original)
>>> > > > > +++ llvm/trunk/test/CodeGen/PowerPC/sms-grp-order.ll Wed Sep  4
>>> > > > > 12:16:04 2019
>>> > > > > @@ -4,25 +4,24 @@
>>> > > > >
>>> > > > >  define void @lame_encode_buffer_interleaved()
>>> > > > > local_unnamed_addr
>>> > > >
>>> > > > {
>>> > > > >  ; CHECK-LABEL: lame_encode_buffer_interleaved:
>>> > > > > -; CHECK:       # %bb.0:
>>> > > > > -; CHECK-NEXT:    lhz 3, 0(0)
>>> > > > > -; CHECK-NEXT:    li 5, 1
>>> > > > > -; CHECK-NEXT:    sldi 5, 5, 62
>>> > > > > -; CHECK-NEXT:    lhz 4, 0(3)
>>> > > > > -; CHECK-NEXT:    mtctr 5
>>> > > > > -; CHECK-NEXT:    .p2align 5
>>> > > > > -; CHECK-NEXT:  .LBB0_1: #
>>> > > > > -; CHECK-NEXT:    extsh 3, 3
>>> > > > > -; CHECK-NEXT:    extsh 4, 4
>>> > > > > -; CHECK-NEXT:    srawi 3, 3, 1
>>> > > > > -; CHECK-NEXT:    addze 3, 3
>>> > > > > -; CHECK-NEXT:    srawi 4, 4, 1
>>> > > > > -; CHECK-NEXT:    addze 4, 4
>>> > > > > -; CHECK-NEXT:    bdnz .LBB0_1
>>> > > > > -; CHECK-NEXT:  # %bb.2:
>>> > > > > -; CHECK-NEXT:    sth 3, 0(0)
>>> > > > > -; CHECK-NEXT:    sth 4, 0(3)
>>> > > > > -; CHECK-NEXT:    blr
>>> > > > > +; CHECK:      # %bb.0:
>>> > > > > +; CHECK-NEXT:   lha 3, 0(3)
>>> > > > > +; CHECK-NEXT:   li 5, 1
>>> > > > > +; CHECK-NEXT:   sldi 5, 5, 62
>>> > > > > +; CHECK-NEXT:   lhz 4, 0(0)
>>> > > > > +; CHECK-NEXT:   mtctr 5
>>> > > > > +; CHECK-NEXT:   srawi 3, 3, 1
>>> > > > > +; CHECK-NEXT:   addze 3, 3
>>> > > > > +; CHECK-NEXT:   .p2align 4
>>> > > > > +; CHECK-NEXT: .LBB0_1:
>>> > > > > +; CHECK-NEXT:   extsh 4, 4
>>> > > > > +; CHECK-NEXT:   srawi 4, 4, 1
>>> > > > > +; CHECK-NEXT:   addze 4, 4
>>> > > > > +; CHECK-NEXT:   bdnz .LBB0_1
>>> > > > > +; CHECK-NEXT: # %bb.2:
>>> > > > > +; CHECK-NEXT:   sth 4, 0(0)
>>> > > > > +; CHECK-NEXT:   sth 3, 0(3)
>>> > > > > +; CHECK-NEXT:   blr
>>> > > > >    br label %1
>>> > > > >
>>> > > > >  1:                                                ; preds =
>>> > > > > %1,
>>> > > >
>>> > > > %0
>>> > > > >
>>> > > > > Modified: llvm/trunk/test/Other/opt-O2-pipeline.ll
>>> > > > > URL:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> 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
>>> > > > >
>>> > > >
>>> > > > =================================================================
>>> > > > ==
>>> > > > ==
>>> > > > > =========
>>> > > > > --- llvm/trunk/test/Other/opt-O2-pipeline.ll (original)
>>> > > > > +++ llvm/trunk/test/Other/opt-O2-pipeline.ll Wed Sep  4
>>> > > > > 12:16:04
>>> > > >
>>> > > > 2019
>>> > > > > @@ -93,12 +93,13 @@
>>> > > > >  ; CHECK-NEXT:         Simplify the CFG
>>> > > > >  ; CHECK-NEXT:         Reassociate expressions
>>> > > > >  ; CHECK-NEXT:         Dominator Tree Construction
>>> > > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:         Memory SSA
>>> > > > >  ; CHECK-NEXT:         Natural Loop Information
>>> > > > >  ; CHECK-NEXT:         Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:         LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:         Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:         Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:           Rotate Loops
>>> > > > > @@ -153,12 +154,13 @@
>>> > > > >  ; CHECK-NEXT:         Phi Values Analysis
>>> > > > >  ; CHECK-NEXT:         Memory Dependence Analysis
>>> > > > >  ; CHECK-NEXT:         Dead Store Elimination
>>> > > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:         Memory SSA
>>> > > > >  ; CHECK-NEXT:         Natural Loop Information
>>> > > > >  ; CHECK-NEXT:         Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:         LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:         Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:         Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:           Loop Invariant Code Motion
>>> > > > > @@ -185,12 +187,13 @@
>>> > > > >  ; CHECK-NEXT:     FunctionPass Manager
>>> > > > >  ; CHECK-NEXT:       Float to int
>>> > > > >  ; CHECK-NEXT:       Dominator Tree Construction
>>> > > > > +; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:       Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:       Memory SSA
>>> > > > >  ; CHECK-NEXT:       Natural Loop Information
>>> > > > >  ; CHECK-NEXT:       Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:       LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:       Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:       Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:       Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:         Rotate Loops
>>> > > > > @@ -246,6 +249,7 @@
>>> > > > >  ; CHECK-NEXT:       Lazy Block Frequency Analysis
>>> > > > >  ; CHECK-NEXT:       Optimization Remark Emitter
>>> > > > >  ; CHECK-NEXT:       Combine redundant instructions
>>> > > > > +; CHECK-NEXT:       Memory SSA
>>> > > > >  ; CHECK-NEXT:       Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:       LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass
>>> > > > >
>>> > > > > Modified: llvm/trunk/test/Other/opt-O3-pipeline.ll
>>> > > > > URL:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> 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
>>> > > > >
>>> > > >
>>> > > > =================================================================
>>> > > > ==
>>> > > > ==
>>> > > > > =========
>>> > > > > --- llvm/trunk/test/Other/opt-O3-pipeline.ll (original)
>>> > > > > +++ llvm/trunk/test/Other/opt-O3-pipeline.ll Wed Sep  4
>>> > > > > 12:16:04
>>> > > >
>>> > > > 2019
>>> > > > > @@ -98,12 +98,13 @@
>>> > > > >  ; CHECK-NEXT:         Simplify the CFG
>>> > > > >  ; CHECK-NEXT:         Reassociate expressions
>>> > > > >  ; CHECK-NEXT:         Dominator Tree Construction
>>> > > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:         Memory SSA
>>> > > > >  ; CHECK-NEXT:         Natural Loop Information
>>> > > > >  ; CHECK-NEXT:         Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:         LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:         Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:         Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:           Rotate Loops
>>> > > > > @@ -158,12 +159,13 @@
>>> > > > >  ; CHECK-NEXT:         Phi Values Analysis
>>> > > > >  ; CHECK-NEXT:         Memory Dependence Analysis
>>> > > > >  ; CHECK-NEXT:         Dead Store Elimination
>>> > > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:         Memory SSA
>>> > > > >  ; CHECK-NEXT:         Natural Loop Information
>>> > > > >  ; CHECK-NEXT:         Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:         LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:         Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:         Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:           Loop Invariant Code Motion
>>> > > > > @@ -190,12 +192,13 @@
>>> > > > >  ; CHECK-NEXT:     FunctionPass Manager
>>> > > > >  ; CHECK-NEXT:       Float to int
>>> > > > >  ; CHECK-NEXT:       Dominator Tree Construction
>>> > > > > +; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:       Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:       Memory SSA
>>> > > > >  ; CHECK-NEXT:       Natural Loop Information
>>> > > > >  ; CHECK-NEXT:       Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:       LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:       Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:       Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:       Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:         Rotate Loops
>>> > > > > @@ -251,6 +254,7 @@
>>> > > > >  ; CHECK-NEXT:       Lazy Block Frequency Analysis
>>> > > > >  ; CHECK-NEXT:       Optimization Remark Emitter
>>> > > > >  ; CHECK-NEXT:       Combine redundant instructions
>>> > > > > +; CHECK-NEXT:       Memory SSA
>>> > > > >  ; CHECK-NEXT:       Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:       LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass
>>> > > > >
>>> > > > > Modified: llvm/trunk/test/Other/opt-Os-pipeline.ll
>>> > > > > URL:
>>> > > > >
>>> > > >
>>> > > >
>>>
>>> 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
>>> > > > >
>>> > > >
>>> > > > =================================================================
>>> > > > ==
>>> > > > ==
>>> > > > > =========
>>> > > > > --- llvm/trunk/test/Other/opt-Os-pipeline.ll (original)
>>> > > > > +++ llvm/trunk/test/Other/opt-Os-pipeline.ll Wed Sep  4
>>> > > > > 12:16:04
>>> > > >
>>> > > > 2019
>>> > > > > @@ -80,12 +80,13 @@
>>> > > > >  ; CHECK-NEXT:         Simplify the CFG
>>> > > > >  ; CHECK-NEXT:         Reassociate expressions
>>> > > > >  ; CHECK-NEXT:         Dominator Tree Construction
>>> > > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:         Memory SSA
>>> > > > >  ; CHECK-NEXT:         Natural Loop Information
>>> > > > >  ; CHECK-NEXT:         Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:         LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:         Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:         Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:           Rotate Loops
>>> > > > > @@ -140,12 +141,13 @@
>>> > > > >  ; CHECK-NEXT:         Phi Values Analysis
>>> > > > >  ; CHECK-NEXT:         Memory Dependence Analysis
>>> > > > >  ; CHECK-NEXT:         Dead Store Elimination
>>> > > > > +; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:         Memory SSA
>>> > > > >  ; CHECK-NEXT:         Natural Loop Information
>>> > > > >  ; CHECK-NEXT:         Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:         LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:         Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:         Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:         Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:         Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:           Loop Invariant Code Motion
>>> > > > > @@ -172,12 +174,13 @@
>>> > > > >  ; CHECK-NEXT:     FunctionPass Manager
>>> > > > >  ; CHECK-NEXT:       Float to int
>>> > > > >  ; CHECK-NEXT:       Dominator Tree Construction
>>> > > > > +; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
>>> > > > > +; CHECK-NEXT:       Function Alias Analysis Results
>>> > > > > +; CHECK-NEXT:       Memory SSA
>>> > > > >  ; CHECK-NEXT:       Natural Loop Information
>>> > > > >  ; CHECK-NEXT:       Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:       LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass
>>> > > > > -; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
>>> > > > > -; CHECK-NEXT:       Function Alias Analysis Results
>>> > > > >  ; CHECK-NEXT:       Scalar Evolution Analysis
>>> > > > >  ; CHECK-NEXT:       Loop Pass Manager
>>> > > > >  ; CHECK-NEXT:         Rotate Loops
>>> > > > > @@ -233,6 +236,7 @@
>>> > > > >  ; CHECK-NEXT:       Lazy Block Frequency Analysis
>>> > > > >  ; CHECK-NEXT:       Optimization Remark Emitter
>>> > > > >  ; CHECK-NEXT:       Combine redundant instructions
>>> > > > > +; CHECK-NEXT:       Memory SSA
>>> > > > >  ; CHECK-NEXT:       Canonicalize natural loops
>>> > > > >  ; CHECK-NEXT:       LCSSA Verifier
>>> > > > >  ; CHECK-NEXT:       Loop-Closed SSA Form Pass
>>> > > > >
>>> > > > >
>>> > > > > _______________________________________________
>>> > > > > llvm-commits mailing list
>>> > > > > llvm-commits at lists.llvm.org
>>> > > > >
>>> >
>>> >
>>>
>>> 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
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190906/48c7a8d7/attachment.html>


More information about the llvm-commits mailing list