[PATCH] D19463: Thread TargetLibraryInfo through PHITransAddr.
Rafael EspĂndola via llvm-commits
llvm-commits at lists.llvm.org
Sun Apr 24 06:30:11 PDT 2016
Why not just delete the field instead?
On Apr 24, 2016 2:08 AM, "Nick Lewycky via llvm-commits" <
llvm-commits at lists.llvm.org> wrote:
> nicholas created this revision.
> nicholas added a subscriber: llvm-commits.
> nicholas set the repository for this revision to rL LLVM.
>
> PHITransAddr has a TargetLibraryInfo* member which it always sets to
> nullptr at construction. It has the logic to pass the TLI down to
> instruction simplify utility functions, but it doesn't take any value from
> the pass.
>
> The attached pass simply adds the plumbing to the four callees, three of
> which have TLIs to pass in.
>
> There is no testcase included, all the existing tests continue to pass.
> This change wasn't motivated by any example code, only by the "huh that's
> funny" of seeing the PHITransAddr constructor always set TLI to nullptr.
>
> Repository:
> rL LLVM
>
> http://reviews.llvm.org/D19463
>
> Files:
> include/llvm/Analysis/PHITransAddr.h
> include/llvm/Transforms/Utils/MemorySSA.h
> lib/Analysis/MemoryDependenceAnalysis.cpp
> lib/Analysis/PHITransAddr.cpp
> lib/Transforms/Scalar/GVN.cpp
>
> Index: lib/Transforms/Scalar/GVN.cpp
> ===================================================================
> --- lib/Transforms/Scalar/GVN.cpp
> +++ lib/Transforms/Scalar/GVN.cpp
> @@ -1494,7 +1494,7 @@
> // If all preds have a single successor, then we know it is safe to
> insert
> // the load on the pred (?!?), so we can insert code to materialize
> the
> // pointer if it is not available.
> - PHITransAddr Address(LI->getPointerOperand(), DL, AC);
> + PHITransAddr Address(LI->getPointerOperand(), DL, TLI, AC);
> Value *LoadPtr = nullptr;
> LoadPtr = Address.PHITranslateWithInsertion(LoadBB, UnavailablePred,
> *DT, NewInsts);
> Index: lib/Analysis/MemoryDependenceAnalysis.cpp
> ===================================================================
> --- lib/Analysis/MemoryDependenceAnalysis.cpp
> +++ lib/Analysis/MemoryDependenceAnalysis.cpp
> @@ -909,7 +909,7 @@
> return;
> }
> const DataLayout &DL = FromBB->getModule()->getDataLayout();
> - PHITransAddr Address(const_cast<Value *>(Loc.Ptr), DL, &AC);
> + PHITransAddr Address(const_cast<Value *>(Loc.Ptr), DL, &TLI, &AC);
>
> // This is the set of blocks we've inspected, and the pointer we
> consider in
> // each block. Because of critical edges, we currently bail out if
> querying
> Index: lib/Analysis/PHITransAddr.cpp
> ===================================================================
> --- lib/Analysis/PHITransAddr.cpp
> +++ lib/Analysis/PHITransAddr.cpp
> @@ -371,7 +371,7 @@
> SmallVectorImpl<Instruction*> &NewInsts) {
> // See if we have a version of this value already available and
> dominating
> // PredBB. If so, there is no need to insert a new instance of it.
> - PHITransAddr Tmp(InVal, DL, AC);
> + PHITransAddr Tmp(InVal, DL, TLI, AC);
> if (!Tmp.PHITranslateValue(CurBB, PredBB, &DT, /*MustDominate=*/true))
> return Tmp.getAddr();
>
> Index: include/llvm/Transforms/Utils/MemorySSA.h
> ===================================================================
> --- include/llvm/Transforms/Utils/MemorySSA.h
> +++ include/llvm/Transforms/Utils/MemorySSA.h
> @@ -918,7 +918,8 @@
> if (WalkingPhi && Location.Ptr) {
> PHITransAddr Translator(
> const_cast<Value *>(Location.Ptr),
> - OriginalAccess->getBlock()->getModule()->getDataLayout(),
> nullptr);
> + OriginalAccess->getBlock()->getModule()->getDataLayout(),
> nullptr,
> + nullptr);
> if (!Translator.PHITranslateValue(OriginalAccess->getBlock(),
> DefIterator.getPhiArgBlock(),
> nullptr,
> false))
> Index: include/llvm/Analysis/PHITransAddr.h
> ===================================================================
> --- include/llvm/Analysis/PHITransAddr.h
> +++ include/llvm/Analysis/PHITransAddr.h
> @@ -50,8 +50,9 @@
> SmallVector<Instruction*, 4> InstInputs;
>
> public:
> - PHITransAddr(Value *addr, const DataLayout &DL, AssumptionCache *AC)
> - : Addr(addr), DL(DL), TLI(nullptr), AC(AC) {
> + PHITransAddr(Value *addr, const DataLayout &DL, const TargetLibraryInfo
> *TLI,
> + AssumptionCache *AC)
> + : Addr(addr), DL(DL), TLI(TLI), AC(AC) {
> // If the address is an instruction, the whole thing is considered an
> input.
> if (Instruction *I = dyn_cast<Instruction>(Addr))
> InstInputs.push_back(I);
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160424/8f23b6c1/attachment.html>
More information about the llvm-commits
mailing list