Skip to content

Commit 2ce38b3

Browse files
committed
[NFC] Reduce include files dependency.
1. Removed #include "...AliasAnalysis.h" in other headers and modules. 2. Cleaned up includes in AliasAnalysis.h. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D92489
1 parent 415fab6 commit 2ce38b3

40 files changed

+115
-86
lines changed

llvm/include/llvm/Analysis/AliasAnalysis.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@
4242
#include "llvm/ADT/Optional.h"
4343
#include "llvm/ADT/SmallVector.h"
4444
#include "llvm/Analysis/MemoryLocation.h"
45-
#include "llvm/Analysis/TargetLibraryInfo.h"
46-
#include "llvm/IR/Function.h"
4745
#include "llvm/IR/Instruction.h"
4846
#include "llvm/IR/Instructions.h"
4947
#include "llvm/IR/PassManager.h"
@@ -59,6 +57,7 @@ class AnalysisUsage;
5957
class BasicAAResult;
6058
class BasicBlock;
6159
class DominatorTree;
60+
class Function;
6261
class Value;
6362

6463
/// The possible results of an alias query.
@@ -1172,12 +1171,7 @@ class AAManager : public AnalysisInfoMixin<AAManager> {
11721171
ResultGetters.push_back(&getModuleAAResultImpl<AnalysisT>);
11731172
}
11741173

1175-
Result run(Function &F, FunctionAnalysisManager &AM) {
1176-
Result R(AM.getResult<TargetLibraryAnalysis>(F));
1177-
for (auto &Getter : ResultGetters)
1178-
(*Getter)(F, AM, R);
1179-
return R;
1180-
}
1174+
Result run(Function &F, FunctionAnalysisManager &AM);
11811175

11821176
private:
11831177
friend AnalysisInfoMixin<AAManager>;

llvm/include/llvm/Analysis/AliasSetTracker.h

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "llvm/ADT/DenseMapInfo.h"
2121
#include "llvm/ADT/ilist.h"
2222
#include "llvm/ADT/ilist_node.h"
23-
#include "llvm/Analysis/AliasAnalysis.h"
23+
#include "llvm/Analysis/MemoryLocation.h"
2424
#include "llvm/IR/Instruction.h"
2525
#include "llvm/IR/Metadata.h"
2626
#include "llvm/IR/PassManager.h"
@@ -34,6 +34,7 @@
3434

3535
namespace llvm {
3636

37+
class AAResults;
3738
class AliasSetTracker;
3839
class BasicBlock;
3940
class LoadInst;
@@ -46,6 +47,8 @@ class StoreInst;
4647
class VAArgInst;
4748
class Value;
4849

50+
enum AliasResult : uint8_t;
51+
4952
class AliasSet : public ilist_node<AliasSet> {
5053
friend class AliasSetTracker;
5154

@@ -294,7 +297,7 @@ class AliasSet : public ilist_node<AliasSet> {
294297
void addPointer(AliasSetTracker &AST, PointerRec &Entry, LocationSize Size,
295298
const AAMDNodes &AAInfo, bool KnownMustAlias = false,
296299
bool SkipSizeUpdate = false);
297-
void addUnknownInst(Instruction *I, AliasAnalysis &AA);
300+
void addUnknownInst(Instruction *I, AAResults &AA);
298301

299302
void removeUnknownInst(AliasSetTracker &AST, Instruction *I) {
300303
bool WasEmpty = UnknownInsts.empty();
@@ -312,8 +315,8 @@ class AliasSet : public ilist_node<AliasSet> {
312315
/// If the specified pointer "may" (or must) alias one of the members in the
313316
/// set return the appropriate AliasResult. Otherwise return NoAlias.
314317
AliasResult aliasesPointer(const Value *Ptr, LocationSize Size,
315-
const AAMDNodes &AAInfo, AliasAnalysis &AA) const;
316-
bool aliasesUnknownInst(const Instruction *Inst, AliasAnalysis &AA) const;
318+
const AAMDNodes &AAInfo, AAResults &AA) const;
319+
bool aliasesUnknownInst(const Instruction *Inst, AAResults &AA) const;
317320
};
318321

319322
inline raw_ostream& operator<<(raw_ostream &OS, const AliasSet &AS) {
@@ -339,7 +342,7 @@ class AliasSetTracker {
339342
/// handle.
340343
struct ASTCallbackVHDenseMapInfo : public DenseMapInfo<Value *> {};
341344

342-
AliasAnalysis &AA;
345+
AAResults &AA;
343346
MemorySSA *MSSA = nullptr;
344347
Loop *L = nullptr;
345348
ilist<AliasSet> AliasSets;
@@ -353,9 +356,9 @@ class AliasSetTracker {
353356
public:
354357
/// Create an empty collection of AliasSets, and use the specified alias
355358
/// analysis object to disambiguate load and store addresses.
356-
explicit AliasSetTracker(AliasAnalysis &aa) : AA(aa) {}
357-
explicit AliasSetTracker(AliasAnalysis &aa, MemorySSA *mssa, Loop *l)
358-
: AA(aa), MSSA(mssa), L(l) {}
359+
explicit AliasSetTracker(AAResults &AA) : AA(AA) {}
360+
explicit AliasSetTracker(AAResults &AA, MemorySSA *MSSA, Loop *L)
361+
: AA(AA), MSSA(MSSA), L(L) {}
359362
~AliasSetTracker() { clear(); }
360363

361364
/// These methods are used to add different types of instructions to the alias
@@ -394,7 +397,7 @@ class AliasSetTracker {
394397
AliasSet &getAliasSetFor(const MemoryLocation &MemLoc);
395398

396399
/// Return the underlying alias analysis object used by this tracker.
397-
AliasAnalysis &getAliasAnalysis() const { return AA; }
400+
AAResults &getAliasAnalysis() const { return AA; }
398401

399402
/// This method is used to remove a pointer value from the AliasSetTracker
400403
/// entirely. It should be used when an instruction is deleted from the

llvm/include/llvm/Analysis/BasicAliasAnalysis.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
#include "llvm/ADT/SmallPtrSet.h"
1919
#include "llvm/ADT/SmallVector.h"
2020
#include "llvm/Analysis/AliasAnalysis.h"
21-
#include "llvm/Analysis/AssumptionCache.h"
22-
#include "llvm/Analysis/MemoryLocation.h"
2321
#include "llvm/IR/InstrTypes.h"
2422
#include "llvm/IR/PassManager.h"
2523
#include "llvm/Pass.h"

llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@
2323
#define LLVM_LIB_ANALYSIS_OBJCARCANALYSISUTILS_H
2424

2525
#include "llvm/ADT/Optional.h"
26-
#include "llvm/Analysis/AliasAnalysis.h"
2726
#include "llvm/Analysis/ObjCARCInstKind.h"
2827
#include "llvm/Analysis/ValueTracking.h"
2928
#include "llvm/IR/Constants.h"
3029
#include "llvm/IR/Module.h"
3130
#include "llvm/IR/ValueHandle.h"
3231

3332
namespace llvm {
33+
34+
class AAResults;
35+
3436
namespace objcarc {
3537

3638
/// A handy option to enable/disable all ARC Optimizations.
@@ -161,24 +163,7 @@ inline bool IsPotentialRetainableObjPtr(const Value *Op) {
161163
return true;
162164
}
163165

164-
inline bool IsPotentialRetainableObjPtr(const Value *Op,
165-
AliasAnalysis &AA) {
166-
// First make the rudimentary check.
167-
if (!IsPotentialRetainableObjPtr(Op))
168-
return false;
169-
170-
// Objects in constant memory are not reference-counted.
171-
if (AA.pointsToConstantMemory(Op))
172-
return false;
173-
174-
// Pointers in constant memory are not pointing to reference-counted objects.
175-
if (const LoadInst *LI = dyn_cast<LoadInst>(Op))
176-
if (AA.pointsToConstantMemory(LI->getPointerOperand()))
177-
return false;
178-
179-
// Otherwise assume the worst.
180-
return true;
181-
}
166+
bool IsPotentialRetainableObjPtr(const Value *Op, AAResults &AA);
182167

183168
/// Helper for GetARCInstKind. Determines what kind of construct CS
184169
/// is.

llvm/include/llvm/CodeGen/MachinePipeliner.h

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
#ifndef LLVM_LIB_CODEGEN_MACHINEPIPELINER_H
4141
#define LLVM_LIB_CODEGEN_MACHINEPIPELINER_H
4242

43-
#include "llvm/Analysis/AliasAnalysis.h"
44-
4543
#include "llvm/CodeGen/MachineDominators.h"
4644
#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
4745
#include "llvm/CodeGen/RegisterClassInfo.h"
@@ -51,6 +49,7 @@
5149

5250
namespace llvm {
5351

52+
class AAResults;
5453
class NodeSet;
5554
class SMSchedule;
5655

@@ -92,15 +91,7 @@ class MachinePipeliner : public MachineFunctionPass {
9291

9392
bool runOnMachineFunction(MachineFunction &MF) override;
9493

95-
void getAnalysisUsage(AnalysisUsage &AU) const override {
96-
AU.addRequired<AAResultsWrapperPass>();
97-
AU.addPreserved<AAResultsWrapperPass>();
98-
AU.addRequired<MachineLoopInfo>();
99-
AU.addRequired<MachineDominatorTree>();
100-
AU.addRequired<LiveIntervals>();
101-
AU.addRequired<MachineOptimizationRemarkEmitterPass>();
102-
MachineFunctionPass::getAnalysisUsage(AU);
103-
}
94+
void getAnalysisUsage(AnalysisUsage &AU) const override;
10495

10596
private:
10697
void preprocessPhiNodes(MachineBasicBlock &B);
@@ -285,7 +276,7 @@ class SwingSchedulerDAG : public ScheduleDAGInstrs {
285276
static bool classof(const ScheduleDAGInstrs *DAG) { return true; }
286277

287278
private:
288-
void addLoopCarriedDependences(AliasAnalysis *AA);
279+
void addLoopCarriedDependences(AAResults *AA);
289280
void updatePhiDependences();
290281
void changeDependences();
291282
unsigned calculateResMII();

llvm/include/llvm/Transforms/IPO/Attributor.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@
102102
#include "llvm/ADT/MapVector.h"
103103
#include "llvm/ADT/STLExtras.h"
104104
#include "llvm/ADT/SetVector.h"
105-
#include "llvm/Analysis/AliasAnalysis.h"
106105
#include "llvm/Analysis/AssumeBundleQueries.h"
107106
#include "llvm/Analysis/CFG.h"
108107
#include "llvm/Analysis/CGSCCPassManager.h"
@@ -128,6 +127,8 @@ struct AbstractAttribute;
128127
struct InformationCache;
129128
struct AAIsDead;
130129

130+
class AAManager;
131+
class AAResults;
131132
class Function;
132133

133134
/// The value passed to the line option that defines the maximal initialization
@@ -863,9 +864,7 @@ struct InformationCache {
863864
}
864865

865866
/// Return AliasAnalysis Result for function \p F.
866-
AAResults *getAAResultsForFunction(const Function &F) {
867-
return AG.getAnalysis<AAManager>(F);
868-
}
867+
AAResults *getAAResultsForFunction(const Function &F);
869868

870869
/// Return true if \p Arg is involved in a must-tail call, thus the argument
871870
/// of the caller or callee.

llvm/include/llvm/Transforms/Scalar/JumpThreading.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#include "llvm/ADT/SmallPtrSet.h"
2020
#include "llvm/ADT/SmallSet.h"
2121
#include "llvm/ADT/SmallVector.h"
22-
#include "llvm/Analysis/AliasAnalysis.h"
2322
#include "llvm/Analysis/BlockFrequencyInfo.h"
2423
#include "llvm/Analysis/BranchProbabilityInfo.h"
2524
#include "llvm/Analysis/DomTreeUpdater.h"
@@ -29,6 +28,7 @@
2928

3029
namespace llvm {
3130

31+
class AAResults;
3232
class BasicBlock;
3333
class BinaryOperator;
3434
class BranchInst;
@@ -41,6 +41,8 @@ class IntrinsicInst;
4141
class LazyValueInfo;
4242
class LoadInst;
4343
class PHINode;
44+
class SelectInst;
45+
class SwitchInst;
4446
class TargetLibraryInfo;
4547
class Value;
4648

@@ -77,7 +79,7 @@ enum ConstantPreference { WantInteger, WantBlockAddress };
7779
class JumpThreadingPass : public PassInfoMixin<JumpThreadingPass> {
7880
TargetLibraryInfo *TLI;
7981
LazyValueInfo *LVI;
80-
AliasAnalysis *AA;
82+
AAResults *AA;
8183
DomTreeUpdater *DTU;
8284
std::unique_ptr<BlockFrequencyInfo> BFI;
8385
std::unique_ptr<BranchProbabilityInfo> BPI;
@@ -97,10 +99,10 @@ class JumpThreadingPass : public PassInfoMixin<JumpThreadingPass> {
9799
JumpThreadingPass(bool InsertFreezeWhenUnfoldingSelect = false, int T = -1);
98100

99101
// Glue for old PM.
100-
bool runImpl(Function &F, TargetLibraryInfo *TLI_, LazyValueInfo *LVI_,
101-
AliasAnalysis *AA_, DomTreeUpdater *DTU_, bool HasProfileData_,
102-
std::unique_ptr<BlockFrequencyInfo> BFI_,
103-
std::unique_ptr<BranchProbabilityInfo> BPI_);
102+
bool runImpl(Function &F, TargetLibraryInfo *TLI, LazyValueInfo *LVI,
103+
AAResults *AA, DomTreeUpdater *DTU, bool HasProfileData,
104+
std::unique_ptr<BlockFrequencyInfo> BFI,
105+
std::unique_ptr<BranchProbabilityInfo> BPI);
104106

105107
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
106108

llvm/include/llvm/Transforms/Scalar/LoopPassManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#include "llvm/ADT/PostOrderIterator.h"
4040
#include "llvm/ADT/PriorityWorklist.h"
4141
#include "llvm/ADT/STLExtras.h"
42-
#include "llvm/Analysis/AliasAnalysis.h"
42+
#include "llvm/Analysis/AssumptionCache.h"
4343
#include "llvm/Analysis/BasicAliasAnalysis.h"
4444
#include "llvm/Analysis/BlockFrequencyInfo.h"
4545
#include "llvm/Analysis/GlobalsModRef.h"

llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,21 @@
1414
#ifndef LLVM_TRANSFORMS_SCALAR_MEMCPYOPTIMIZER_H
1515
#define LLVM_TRANSFORMS_SCALAR_MEMCPYOPTIMIZER_H
1616

17-
#include "llvm/Analysis/AliasAnalysis.h"
1817
#include "llvm/IR/BasicBlock.h"
1918
#include "llvm/IR/PassManager.h"
2019
#include <cstdint>
2120
#include <functional>
2221

2322
namespace llvm {
2423

24+
class AAResults;
2525
class AssumptionCache;
26+
class CallBase;
2627
class CallInst;
2728
class DominatorTree;
2829
class Function;
2930
class Instruction;
31+
class LoadInst;
3032
class MemCpyInst;
3133
class MemMoveInst;
3234
class MemoryDependenceResults;
@@ -40,7 +42,7 @@ class Value;
4042
class MemCpyOptPass : public PassInfoMixin<MemCpyOptPass> {
4143
MemoryDependenceResults *MD = nullptr;
4244
TargetLibraryInfo *TLI = nullptr;
43-
AliasAnalysis *AA = nullptr;
45+
AAResults *AA = nullptr;
4446
AssumptionCache *AC = nullptr;
4547
DominatorTree *DT = nullptr;
4648
MemorySSA *MSSA = nullptr;
@@ -52,9 +54,9 @@ class MemCpyOptPass : public PassInfoMixin<MemCpyOptPass> {
5254
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
5355

5456
// Glue for the old PM.
55-
bool runImpl(Function &F, MemoryDependenceResults *MD_,
56-
TargetLibraryInfo *TLI_, AliasAnalysis *AA_,
57-
AssumptionCache *AC_, DominatorTree *DT_, MemorySSA *MSSA_);
57+
bool runImpl(Function &F, MemoryDependenceResults *MD, TargetLibraryInfo *TLI,
58+
AAResults *AA, AssumptionCache *AC, DominatorTree *DT,
59+
MemorySSA *MSSA);
5860

5961
private:
6062
// Helper functions

llvm/lib/Analysis/AliasAnalysis.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -843,6 +843,13 @@ void AAResultsWrapperPass::getAnalysisUsage(AnalysisUsage &AU) const {
843843
AU.addUsedIfAvailable<ExternalAAWrapperPass>();
844844
}
845845

846+
AAManager::Result AAManager::run(Function &F, FunctionAnalysisManager &AM) {
847+
Result R(AM.getResult<TargetLibraryAnalysis>(F));
848+
for (auto &Getter : ResultGetters)
849+
(*Getter)(F, AM, R);
850+
return R;
851+
}
852+
846853
AAResults llvm::createLegacyPMAAResults(Pass &P, Function &F,
847854
BasicAAResult &BAR) {
848855
AAResults AAR(P.getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F));

llvm/lib/Analysis/IVDescriptors.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
#include "llvm/Analysis/IVDescriptors.h"
1414
#include "llvm/ADT/ScopeExit.h"
15-
#include "llvm/Analysis/AliasAnalysis.h"
1615
#include "llvm/Analysis/BasicAliasAnalysis.h"
1716
#include "llvm/Analysis/DemandedBits.h"
1817
#include "llvm/Analysis/DomTreeUpdater.h"

llvm/lib/Analysis/LoopAnalysisManager.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "llvm/Analysis/LoopAnalysisManager.h"
10+
#include "llvm/Analysis/AssumptionCache.h"
1011
#include "llvm/Analysis/BasicAliasAnalysis.h"
1112
#include "llvm/Analysis/GlobalsModRef.h"
1213
#include "llvm/Analysis/LoopInfo.h"

llvm/lib/Analysis/ObjCARCAnalysisUtils.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
#include "llvm/Analysis/ObjCARCAnalysisUtils.h"
16+
#include "llvm/Analysis/AliasAnalysis.h"
1617
#include "llvm/Support/CommandLine.h"
1718

1819
using namespace llvm;
@@ -23,3 +24,22 @@ bool llvm::objcarc::EnableARCOpts;
2324
static cl::opt<bool, true> EnableARCOptimizations(
2425
"enable-objc-arc-opts", cl::desc("enable/disable all ARC Optimizations"),
2526
cl::location(EnableARCOpts), cl::init(true), cl::Hidden);
27+
28+
bool llvm::objcarc::IsPotentialRetainableObjPtr(const Value *Op,
29+
AAResults &AA) {
30+
// First make the rudimentary check.
31+
if (!IsPotentialRetainableObjPtr(Op))
32+
return false;
33+
34+
// Objects in constant memory are not reference-counted.
35+
if (AA.pointsToConstantMemory(Op))
36+
return false;
37+
38+
// Pointers in constant memory are not pointing to reference-counted objects.
39+
if (const LoadInst *LI = dyn_cast<LoadInst>(Op))
40+
if (AA.pointsToConstantMemory(LI->getPointerOperand()))
41+
return false;
42+
43+
// Otherwise assume the worst.
44+
return true;
45+
}

0 commit comments

Comments
 (0)