diff options
author | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2019-04-26 09:21:25 +0000 |
---|---|---|
committer | Sven van Haastregt <sven.vanhaastregt@arm.com> | 2019-04-26 09:21:25 +0000 |
commit | 66f612601dc9bb82cc7f277f12f0ded3d8069e38 (patch) | |
tree | 9099cf6cd84d69d1509a0f8e18418f5fbf4fd241 /llvm/lib/Transforms | |
parent | b8c1cc97f31e7d52f7ad116658eb0d2325adeba7 (diff) | |
download | bcm5719-llvm-66f612601dc9bb82cc7f277f12f0ded3d8069e38.tar.gz bcm5719-llvm-66f612601dc9bb82cc7f277f12f0ded3d8069e38.zip |
[InferAddressSpaces] Add AS parameter to the pass factory
This enables the pass to be used in the absence of
TargetTransformInfo. When the argument isn't passed, the factory
defaults to UninitializedAddressSpace and the flat address space is
obtained from the TargetTransformInfo as before this change. Existing
users won't have to change.
Patch by Kevin Petit.
Differential Revision: https://reviews.llvm.org/D60602
llvm-svn: 359290
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp index 1501b4888b1..a59248cc8c5 100644 --- a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp +++ b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp @@ -148,7 +148,9 @@ class InferAddressSpaces : public FunctionPass { public: static char ID; - InferAddressSpaces() : FunctionPass(ID) {} + InferAddressSpaces() : + FunctionPass(ID), FlatAddrSpace(UninitializedAddressSpace) {} + InferAddressSpaces(unsigned AS) : FunctionPass(ID), FlatAddrSpace(AS) {} void getAnalysisUsage(AnalysisUsage &AU) const override { AU.setPreservesCFG(); @@ -624,9 +626,12 @@ bool InferAddressSpaces::runOnFunction(Function &F) { const TargetTransformInfo &TTI = getAnalysis<TargetTransformInfoWrapperPass>().getTTI(F); - FlatAddrSpace = TTI.getFlatAddressSpace(); - if (FlatAddrSpace == UninitializedAddressSpace) - return false; + + if (FlatAddrSpace == UninitializedAddressSpace) { + FlatAddrSpace = TTI.getFlatAddressSpace(); + if (FlatAddrSpace == UninitializedAddressSpace) + return false; + } // Collects all flat address expressions in postorder. std::vector<WeakTrackingVH> Postorder = collectFlatAddressExpressions(F); @@ -1018,6 +1023,6 @@ bool InferAddressSpaces::rewriteWithNewAddressSpaces( return true; } -FunctionPass *llvm::createInferAddressSpacesPass() { - return new InferAddressSpaces(); +FunctionPass *llvm::createInferAddressSpacesPass(unsigned AddressSpace) { + return new InferAddressSpaces(AddressSpace); } |