From 8f1dd5c41eb8a50bdd7f89e4afbb5273caa945a1 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 7 Sep 2016 23:39:04 +0000 Subject: [PATCH] IR: Remove Value::intersectOptionalDataWith, replace all calls with calls to Instruction::andIRFlags. The two functions are functionally equivalent. Differential Revision: https://reviews.llvm.org/D22830 llvm-svn: 280884 --- llvm/include/llvm/IR/Value.h | 5 ----- llvm/lib/Transforms/Scalar/GVNHoist.cpp | 4 ++-- llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp | 4 ++-- llvm/lib/Transforms/Utils/SimplifyCFG.cpp | 2 +- llvm/lib/Transforms/Vectorize/BBVectorize.cpp | 2 +- 5 files changed, 6 insertions(+), 11 deletions(-) diff --git a/llvm/include/llvm/IR/Value.h b/llvm/include/llvm/IR/Value.h index ae4b494..b3d318c 100644 --- a/llvm/include/llvm/IR/Value.h +++ b/llvm/include/llvm/IR/Value.h @@ -442,11 +442,6 @@ public: return SubclassOptionalData == V->SubclassOptionalData; } - /// \brief Clear any optional flags not set in the given Value. - void intersectOptionalDataWith(const Value *V) { - SubclassOptionalData &= V->SubclassOptionalData; - } - /// \brief Return true if there is a value handle associated with this value. bool hasValueHandle() const { return HasValueHandle; } diff --git a/llvm/lib/Transforms/Scalar/GVNHoist.cpp b/llvm/lib/Transforms/Scalar/GVNHoist.cpp index 4a6e934..b09bd36 100644 --- a/llvm/lib/Transforms/Scalar/GVNHoist.cpp +++ b/llvm/lib/Transforms/Scalar/GVNHoist.cpp @@ -696,7 +696,7 @@ private: else OtherGep = cast( cast(OtherInst)->getPointerOperand()); - ClonedGep->intersectOptionalDataWith(OtherGep); + ClonedGep->andIRFlags(OtherGep); } // Replace uses of Gep with ClonedGep in Repl. @@ -843,7 +843,7 @@ private: MSSA->removeMemoryAccess(OldMA); } - Repl->intersectOptionalDataWith(I); + Repl->andIRFlags(I); combineKnownMetadata(Repl, I); I->replaceAllUsesWith(Repl); // Also invalidate the Alias Analysis cache. diff --git a/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp b/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp index ccdb377..6a64c6b 100644 --- a/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp +++ b/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp @@ -260,7 +260,7 @@ void MergedLoadStoreMotion::hoistInstruction(BasicBlock *BB, assert(HoistCand->getParent() != BB); // Intersect optional metadata. - HoistCand->intersectOptionalDataWith(ElseInst); + HoistCand->andIRFlags(ElseInst); HoistCand->dropUnknownNonDebugMetadata(); // Prepend point for instruction insert @@ -434,7 +434,7 @@ bool MergedLoadStoreMotion::sinkStore(BasicBlock *BB, StoreInst *S0, // Hoist the instruction. BasicBlock::iterator InsertPt = BB->getFirstInsertionPt(); // Intersect optional metadata. - S0->intersectOptionalDataWith(S1); + S0->andIRFlags(S1); S0->dropUnknownNonDebugMetadata(); // Create the new store to be inserted at the join point. diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp index 5785968..1d5d853 100644 --- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1230,7 +1230,7 @@ static bool HoistThenElseCodeToIf(BranchInst *BI, BIParent->getInstList().splice(BI->getIterator(), BB1->getInstList(), I1); if (!I2->use_empty()) I2->replaceAllUsesWith(I1); - I1->intersectOptionalDataWith(I2); + I1->andIRFlags(I2); unsigned KnownIDs[] = {LLVMContext::MD_tbaa, LLVMContext::MD_range, LLVMContext::MD_fpmath, diff --git a/llvm/lib/Transforms/Vectorize/BBVectorize.cpp b/llvm/lib/Transforms/Vectorize/BBVectorize.cpp index af594cb..c01740b 100644 --- a/llvm/lib/Transforms/Vectorize/BBVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/BBVectorize.cpp @@ -3148,7 +3148,7 @@ namespace { LLVMContext::MD_noalias, LLVMContext::MD_fpmath, LLVMContext::MD_invariant_group}; combineMetadata(K, H, KnownIDs); - K->intersectOptionalDataWith(H); + K->andIRFlags(H); for (unsigned o = 0; o < NumOperands; ++o) K->setOperand(o, ReplacedOperands[o]); -- 2.7.4