[llvm] r338384 - [MemDep] Use PhiValuesAnalysis to improve alias analysis results

John Brawn via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 7 09:24:43 PDT 2018


What's going on here is:
 * PhiValuesAnalysis needs to be manually invalidated when a phi or an
   operand of a phi changes, because the cached results may point to
   something invalid. (I spend some time trying to get it to cope
   automatically with this happening, but failed.)
 * BasicAA uses PhiValuesAnalysis only when available.
 * MemoryDependenceAnalysis uses PhiValuesAnalysis, but because it also
   needs to be manually invalidated in the same way we know that we can
   safely use PhiValuesAnalysis by invalidating it when
   MemoryDependenceAnalysis is invalidated.
 * The transformation passes that use MemoryDependenceAnalysis invalidate
   it, PhiValuesAnalysis, and BasicAA, which means that subsequent
   transformation passes wont accidentally pick up a BasicAA that uses
   the PhiValuesAnalysis results.

The above is all fine and well, but it all assumes that analyses will only
be run at the request of a transformation pass. This is true when running
passes via a default pipeline like 'opt -O2', but it's perfectly possible
to run an analysis pass explicitly like you've done here, and this causes
everything to go wrong.

I'll figure out how to fix this, but in the meantime: do you have an
example where we get a crash _without_ an analysis pass being explicitly
executed? I.e. where the opt command-line contains only transformation
passes? Because that would indicate that I'm wrong about the things I
listed above and there's something more fundamentally wrong going on.

John

> -----Original Message-----
> From: Mikael Holmén [mailto:mikael.holmen at ericsson.com]
> Sent: 07 August 2018 08:35
> To: John Brawn
> Cc: llvm-commits at lists.llvm.org
> Subject: Re: [llvm] r338384 - [MemDep] Use PhiValuesAnalysis to improve
> alias analysis results
> 
> Hi John,
> 
> With this commit we've seen instcombine crash in a number of different
> ways (asserts, SEGVs). E.g. if I do the following on trunk now
> 
> opt -S -o - bbi-16681.ll -memdep -instcombine
> 
> I get a SEGV
> 
> Stack dump:
> 0.      Program arguments: build-all-Debug/bin/opt -S -o - bbi-16681.ll
> -memdep -instcombine
> 1.      Running pass 'Function Pass Manager' on module 'bbi-16681.ll'.
> 2.      Running pass 'Combine redundant instructions' on function
> '@main'
> build-all-
> Debug/bin/opt(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamE+0x3c)[0x3
> 744bcc]
> build-all-Debug/bin/opt[0x3744d79]
> build-all-
> Debug/bin/opt(_ZN4llvm3sys17RunSignalHandlersEv+0x7e)[0x3742fce]
> build-all-Debug/bin/opt[0x3745c0a]
> /lib/x86_64-linux-gnu/libpthread.so.0(+0x10330)[0x7fce168ea330]
> build-all-Debug/bin/opt[0xc279fc]
> build-all-Debug/bin/opt[0xca14d5]
> build-all-Debug/bin/opt[0x2e99c00]
> build-all-
> Debug/bin/opt(_ZNK4llvm5Value35stripPointerCastsAndInvariantGroupsEv+0x1
> 5)[0x2e99bd5]
> build-all-
> Debug/bin/opt(_ZN4llvm13BasicAAResult10aliasCheckEPKNS_5ValueEmNS_9AAMDN
> odesES3_mS4_S3_S3_+0x88)[0x233da08]
> build-all-
> Debug/bin/opt(_ZN4llvm13BasicAAResult8aliasPHIEPKNS_7PHINodeEmRKNS_9AAMD
> NodesEPKNS_5ValueEmS6_S9_+0x945)[0x2342345]
> build-all-
> Debug/bin/opt(_ZN4llvm13BasicAAResult10aliasCheckEPKNS_5ValueEmNS_9AAMDN
> odesES3_mS4_S3_S3_+0x753)[0x233e0d3]
> build-all-
> Debug/bin/opt(_ZN4llvm13BasicAAResult5aliasERKNS_14MemoryLocationES3_+0x
> 1eb)[0x233d8bb]
> build-all-Debug/bin/opt[0x231eb29]
> build-all-
> Debug/bin/opt(_ZN4llvm9AAResults5aliasERKNS_14MemoryLocationES3_+0x89)[0
> x23173e9]
> build-all-
> Debug/bin/opt(_ZN4llvm9AAResults13getModRefInfoENS_17ImmutableCallSiteER
> KNS_14MemoryLocationE+0x289)[0x23180d9]
> build-all-Debug/bin/opt[0x15276ed]
> build-all-Debug/bin/opt[0x15274c9]
> build-all-Debug/bin/opt[0x24f5e07]
> build-all-
> Debug/bin/opt(_ZN4llvm25FindAvailablePtrLoadStoreEPNS_5ValueEPNS_4TypeEb
> PNS_10BasicBlockERNS_14ilist_iteratorINS_12ilist_detail12node_optionsINS
> _11InstructionELb1ELb0EvEELb0ELb0EEEjPNS_9AAResultsEPbPj+0x409)[0x24f597
> 9]
> build-all-
> Debug/bin/opt(_ZN4llvm24FindAvailableLoadedValueEPNS_8LoadInstEPNS_10Bas
> icBlockERNS_14ilist_iteratorINS_12ilist_detail12node_optionsINS_11Instru
> ctionELb1ELb0EvEELb0ELb0EEEjPNS_9AAResultsEPbPj+0xa6)[0x24f5556]
> build-all-Debug/bin/opt[0x30eef35]
> build-all-Debug/bin/opt[0x305f898]
> build-all-Debug/bin/opt[0x305ed8f]
> build-all-Debug/bin/opt[0x305976c]
> build-all-Debug/bin/opt[0x305a3e9]
> build-all-
> Debug/bin/opt(_ZN4llvm24InstructionCombiningPass13runOnFunctionERNS_8Fun
> ctionE+0x15b)[0x305a66b]
> build-all-
> Debug/bin/opt(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x1e
> b)[0x2dfd62b]
> build-all-
> Debug/bin/opt(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x75)[0x
> 2dfd9a5]
> build-all-Debug/bin/opt[0x2dfe20e]
> build-all-
> Debug/bin/opt(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x17f)[0
> x2dfdcaf]
> build-all-
> Debug/bin/opt(_ZN4llvm6legacy11PassManager3runERNS_6ModuleE+0x21)[0x2dfe
> 7a1]
> build-all-Debug/bin/opt(main+0x2ca1)[0xc5e431]
> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7fce154c4f45]
> build-all-Debug/bin/opt[0xc1d0a9]
> Segmentation fault
> 
> Also, if I run valgrind on it I get tons of complaints so something
> nasty is definitely going on.
> 
> If I revert your commit it doesn't crash and valgrind doesn't complain
> anymore.
> 
> Regards,
> Mikael
> 
> 
> On 07/31/2018 04:19 PM, John Brawn via llvm-commits wrote:
> > Author: john.brawn
> > Date: Tue Jul 31 07:19:29 2018
> > New Revision: 338384
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=338384&view=rev
> > Log:
> > [MemDep] Use PhiValuesAnalysis to improve alias analysis results
> >
> > This is being done in order to make GVN able to better optimize
> certain inputs.
> > MemDep doesn't use PhiValues directly, but does need to notifiy it
> when things
> > get invalidated.
> >
> > Differential Revision: https://reviews.llvm.org/D48489
> >
> > Modified:
> >      llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h
> >      llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
> >      llvm/trunk/test/Other/new-pm-defaults.ll
> >      llvm/trunk/test/Other/new-pm-lto-defaults.ll
> >      llvm/trunk/test/Other/new-pm-thinlto-defaults.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
> >      llvm/trunk/test/Transforms/GVN/PRE/pre-after-rle.ll
> >
> > Modified: llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h
> > URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h?rev=
> 338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h
> (original)
> > +++ llvm/trunk/include/llvm/Analysis/MemoryDependenceAnalysis.h Tue
> Jul 31 07:19:29 2018
> > @@ -44,6 +44,7 @@ class Instruction;
> >   class LoadInst;
> >   class PHITransAddr;
> >   class TargetLibraryInfo;
> > +class PhiValues;
> >   class Value;
> >
> >   /// A memory dependence query can return one of three different
> answers.
> > @@ -360,13 +361,14 @@ private:
> >     AssumptionCache ∾
> >     const TargetLibraryInfo &TLI;
> >     DominatorTree &DT;
> > +  PhiValues &PV;
> >     PredIteratorCache PredCache;
> >
> >   public:
> >     MemoryDependenceResults(AliasAnalysis &AA, AssumptionCache &AC,
> >                             const TargetLibraryInfo &TLI,
> > -                          DominatorTree &DT)
> > -      : AA(AA), AC(AC), TLI(TLI), DT(DT) {}
> > +                          DominatorTree &DT, PhiValues &PV)
> > +      : AA(AA), AC(AC), TLI(TLI), DT(DT), PV(PV) {}
> >
> >     /// Handle invalidation in the new PM.
> >     bool invalidate(Function &F, const PreservedAnalyses &PA,
> >
> > Modified: llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp
> > URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp?rev=338384&
> r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp (original)
> > +++ llvm/trunk/lib/Analysis/MemoryDependenceAnalysis.cpp Tue Jul 31
> 07:19:29 2018
> > @@ -26,6 +26,7 @@
> >   #include "llvm/Analysis/MemoryLocation.h"
> >   #include "llvm/Analysis/OrderedBasicBlock.h"
> >   #include "llvm/Analysis/PHITransAddr.h"
> > +#include "llvm/Analysis/PhiValues.h"
> >   #include "llvm/Analysis/TargetLibraryInfo.h"
> >   #include "llvm/Analysis/ValueTracking.h"
> >   #include "llvm/IR/Attributes.h"
> > @@ -1513,6 +1514,8 @@ void MemoryDependenceResults::invalidate
> >     RemoveCachedNonLocalPointerDependencies(ValueIsLoadPair(Ptr,
> false));
> >     // Flush load info for the pointer.
> >     RemoveCachedNonLocalPointerDependencies(ValueIsLoadPair(Ptr,
> true));
> > +  // Invalidate phis that use the pointer.
> > +  PV.invalidateValue(Ptr);
> >   }
> >
> >   void MemoryDependenceResults::invalidateCachedPredecessors() {
> > @@ -1671,6 +1674,9 @@ void MemoryDependenceResults::removeInst
> >       }
> >     }
> >
> > +  // Invalidate phis that use the removed instruction.
> > +  PV.invalidateValue(RemInst);
> > +
> >     assert(!NonLocalDeps.count(RemInst) && "RemInst got reinserted?");
> >     LLVM_DEBUG(verifyRemoved(RemInst));
> >   }
> > @@ -1730,7 +1736,8 @@ MemoryDependenceAnalysis::run(Function &
> >     auto &AC = AM.getResult<AssumptionAnalysis>(F);
> >     auto &TLI = AM.getResult<TargetLibraryAnalysis>(F);
> >     auto &DT = AM.getResult<DominatorTreeAnalysis>(F);
> > -  return MemoryDependenceResults(AA, AC, TLI, DT);
> > +  auto &PV = AM.getResult<PhiValuesAnalysis>(F);
> > +  return MemoryDependenceResults(AA, AC, TLI, DT, PV);
> >   }
> >
> >   char MemoryDependenceWrapperPass::ID = 0;
> > @@ -1741,6 +1748,7 @@ INITIALIZE_PASS_DEPENDENCY(AssumptionCac
> >   INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass)
> >   INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
> >   INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
> > +INITIALIZE_PASS_DEPENDENCY(PhiValuesWrapperPass)
> >   INITIALIZE_PASS_END(MemoryDependenceWrapperPass, "memdep",
> >                       "Memory Dependence Analysis", false, true)
> >
> > @@ -1758,6 +1766,7 @@ void MemoryDependenceWrapperPass::getAna
> >     AU.setPreservesAll();
> >     AU.addRequired<AssumptionCacheTracker>();
> >     AU.addRequired<DominatorTreeWrapperPass>();
> > +  AU.addRequired<PhiValuesWrapperPass>();
> >     AU.addRequiredTransitive<AAResultsWrapperPass>();
> >     AU.addRequiredTransitive<TargetLibraryInfoWrapperPass>();
> >   }
> > @@ -1773,7 +1782,8 @@ bool MemoryDependenceResults::invalidate
> >     // Check whether the analyses we depend on became invalid for any
> reason.
> >     if (Inv.invalidate<AAManager>(F, PA) ||
> >         Inv.invalidate<AssumptionAnalysis>(F, PA) ||
> > -      Inv.invalidate<DominatorTreeAnalysis>(F, PA))
> > +      Inv.invalidate<DominatorTreeAnalysis>(F, PA) ||
> > +      Inv.invalidate<PhiValuesAnalysis>(F, PA))
> >       return true;
> >
> >     // Otherwise this analysis result remains valid.
> > @@ -1789,6 +1799,7 @@ bool MemoryDependenceWrapperPass::runOnF
> >     auto &AC =
> getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);
> >     auto &TLI = getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
> >     auto &DT = getAnalysis<DominatorTreeWrapperPass>().getDomTree();
> > -  MemDep.emplace(AA, AC, TLI, DT);
> > +  auto &PV = getAnalysis<PhiValuesWrapperPass>().getResult();
> > +  MemDep.emplace(AA, AC, TLI, DT, PV);
> >     return false;
> >   }
> >
> > Modified: llvm/trunk/test/Other/new-pm-defaults.ll
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/new-pm-
> defaults.ll?rev=338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/test/Other/new-pm-defaults.ll (original)
> > +++ llvm/trunk/test/Other/new-pm-defaults.ll Tue Jul 31 07:19:29 2018
> > @@ -170,17 +170,22 @@
> >   ; CHECK-Os-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-Os-NEXT: Running pass: GVN
> >   ; CHECK-Os-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-Os-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-Oz-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-Oz-NEXT: Running pass: GVN
> >   ; CHECK-Oz-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-Oz-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O2-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-O2-NEXT: Running pass: GVN
> >   ; CHECK-O2-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-O2-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O3-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-O3-NEXT: Running pass: GVN
> >   ; CHECK-O3-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-O3-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O-NEXT: Running pass: MemCpyOptPass
> >   ; CHECK-O1-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-O1-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O-NEXT: Running pass: SCCPPass
> >   ; CHECK-O-NEXT: Running pass: BDCEPass
> >   ; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis
> >
> > Modified: llvm/trunk/test/Other/new-pm-lto-defaults.ll
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/new-pm-
> lto-defaults.ll?rev=338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/test/Other/new-pm-lto-defaults.ll (original)
> > +++ llvm/trunk/test/Other/new-pm-lto-defaults.ll Tue Jul 31 07:19:29
> 2018
> > @@ -81,6 +81,7 @@
> >   ; CHECK-O2-NEXT: Running pass:
> ModuleToPostOrderCGSCCPassAdaptor<{{.*}}PostOrderFunctionAttrsPass>
> >   ; CHECK-O2-NEXT: Running pass:
> ModuleToFunctionPassAdaptor<{{.*}}PassManager{{.*}}>
> >   ; CHECK-O2-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-O2-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O2-NEXT: Running analysis: DemandedBitsAnalysis
> >   ; CHECK-O2-NEXT: Running pass: CrossDSOCFIPass
> >   ; CHECK-O2-NEXT: Running pass: LowerTypeTestsPass
> >
> > Modified: llvm/trunk/test/Other/new-pm-thinlto-defaults.ll
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/new-pm-
> thinlto-defaults.ll?rev=338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/test/Other/new-pm-thinlto-defaults.ll (original)
> > +++ llvm/trunk/test/Other/new-pm-thinlto-defaults.ll Tue Jul 31
> 07:19:29 2018
> > @@ -152,17 +152,22 @@
> >   ; CHECK-Os-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-Os-NEXT: Running pass: GVN
> >   ; CHECK-Os-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-Os-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-Oz-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-Oz-NEXT: Running pass: GVN
> >   ; CHECK-Oz-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-Oz-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O2-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-O2-NEXT: Running pass: GVN
> >   ; CHECK-O2-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-O2-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O3-NEXT: Running pass: MergedLoadStoreMotionPass
> >   ; CHECK-O3-NEXT: Running pass: GVN
> >   ; CHECK-O3-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-O3-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O-NEXT: Running pass: MemCpyOptPass
> >   ; CHECK-O1-NEXT: Running analysis: MemoryDependenceAnalysis
> > +; CHECK-O1-NEXT: Running analysis: PhiValuesAnalysis
> >   ; CHECK-O-NEXT: Running pass: SCCPPass
> >   ; CHECK-O-NEXT: Running pass: BDCEPass
> >   ; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis
> >
> > Modified: llvm/trunk/test/Other/opt-O2-pipeline.ll
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-O2-
> pipeline.ll?rev=338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/test/Other/opt-O2-pipeline.ll (original)
> > +++ llvm/trunk/test/Other/opt-O2-pipeline.ll Tue Jul 31 07:19:29 2018
> > @@ -121,6 +121,7 @@
> >   ; CHECK-NEXT:           Delete dead loops
> >   ; CHECK-NEXT:           Unroll loops
> >   ; CHECK-NEXT:         MergedLoadStoreMotion
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> > @@ -128,6 +129,7 @@
> >   ; CHECK-NEXT:         Lazy Block Frequency Analysis
> >   ; CHECK-NEXT:         Optimization Remark Emitter
> >   ; CHECK-NEXT:         Global Value Numbering
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> > @@ -147,6 +149,7 @@
> >   ; CHECK-NEXT:         Value Propagation
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> >   ; CHECK-NEXT:         Dead Store Elimination
> >   ; CHECK-NEXT:         Natural Loop Information
> >
> > Modified: llvm/trunk/test/Other/opt-O3-pipeline.ll
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-O3-
> pipeline.ll?rev=338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/test/Other/opt-O3-pipeline.ll (original)
> > +++ llvm/trunk/test/Other/opt-O3-pipeline.ll Tue Jul 31 07:19:29 2018
> > @@ -125,6 +125,7 @@
> >   ; CHECK-NEXT:           Delete dead loops
> >   ; CHECK-NEXT:           Unroll loops
> >   ; CHECK-NEXT:         MergedLoadStoreMotion
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> > @@ -132,6 +133,7 @@
> >   ; CHECK-NEXT:         Lazy Block Frequency Analysis
> >   ; CHECK-NEXT:         Optimization Remark Emitter
> >   ; CHECK-NEXT:         Global Value Numbering
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> > @@ -151,6 +153,7 @@
> >   ; CHECK-NEXT:         Value Propagation
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> >   ; CHECK-NEXT:         Dead Store Elimination
> >   ; CHECK-NEXT:         Natural Loop Information
> >
> > Modified: llvm/trunk/test/Other/opt-Os-pipeline.ll
> > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/opt-Os-
> pipeline.ll?rev=338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/test/Other/opt-Os-pipeline.ll (original)
> > +++ llvm/trunk/test/Other/opt-Os-pipeline.ll Tue Jul 31 07:19:29 2018
> > @@ -108,6 +108,7 @@
> >   ; CHECK-NEXT:           Delete dead loops
> >   ; CHECK-NEXT:           Unroll loops
> >   ; CHECK-NEXT:         MergedLoadStoreMotion
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> > @@ -115,6 +116,7 @@
> >   ; CHECK-NEXT:         Lazy Block Frequency Analysis
> >   ; CHECK-NEXT:         Optimization Remark Emitter
> >   ; CHECK-NEXT:         Global Value Numbering
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> > @@ -134,6 +136,7 @@
> >   ; CHECK-NEXT:         Value Propagation
> >   ; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
> >   ; CHECK-NEXT:         Function Alias Analysis Results
> > +; CHECK-NEXT:         Phi Values Analysis
> >   ; CHECK-NEXT:         Memory Dependence Analysis
> >   ; CHECK-NEXT:         Dead Store Elimination
> >   ; CHECK-NEXT:         Natural Loop Information
> >
> > Modified: llvm/trunk/test/Transforms/GVN/PRE/pre-after-rle.ll
> > URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/test/Transforms/GVN/PRE/pre-after-
> rle.ll?rev=338384&r1=338383&r2=338384&view=diff
> >
> ========================================================================
> ======
> > --- llvm/trunk/test/Transforms/GVN/PRE/pre-after-rle.ll (original)
> > +++ llvm/trunk/test/Transforms/GVN/PRE/pre-after-rle.ll Tue Jul 31
> 07:19:29 2018
> > @@ -63,10 +63,12 @@ preheader:
> >     %cmp = icmp slt i32 1, %h
> >     br i1 %cmp, label %body, label %exit
> >
> > -; Alias analysis currently can't figure out %width doesn't alias %s,
> so just
> > -; check that the redundant load has been removed.
> > +; CHECK-LABEL: preheader.body_crit_edge:
> > +; CHECK: load i32, i32* %width, align 8
> > +
> >   ; CHECK-LABEL: body:
> >   ; CHECK-NOT: load i32*, i32** %start, align 8
> > +; CHECK-NOT: load i32, i32* %width, align 8
> >   body:
> >     %j = phi i32 [ 0, %preheader ], [ %j.next, %body ]
> >     %s = load i32*, i32** %start, align 8
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> >


More information about the llvm-commits mailing list