Index: llvm/trunk/include/llvm/IR/Value.h =================================================================== --- llvm/trunk/include/llvm/IR/Value.h +++ llvm/trunk/include/llvm/IR/Value.h @@ -442,11 +442,6 @@ 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; } Index: llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp =================================================================== --- llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp +++ llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp @@ -696,7 +696,7 @@ else OtherGep = cast( cast(OtherInst)->getPointerOperand()); - ClonedGep->intersectOptionalDataWith(OtherGep); + ClonedGep->andIRFlags(OtherGep); } // Replace uses of Gep with ClonedGep in Repl. @@ -843,7 +843,7 @@ MSSA->removeMemoryAccess(OldMA); } - Repl->intersectOptionalDataWith(I); + Repl->andIRFlags(I); combineKnownMetadata(Repl, I); I->replaceAllUsesWith(Repl); // Also invalidate the Alias Analysis cache. Index: llvm/trunk/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp =================================================================== --- llvm/trunk/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp +++ llvm/trunk/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp @@ -260,7 +260,7 @@ assert(HoistCand->getParent() != BB); // Intersect optional metadata. - HoistCand->intersectOptionalDataWith(ElseInst); + HoistCand->andIRFlags(ElseInst); HoistCand->dropUnknownNonDebugMetadata(); // Prepend point for instruction insert @@ -434,7 +434,7 @@ // 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. Index: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp =================================================================== --- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp +++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1230,7 +1230,7 @@ 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, Index: llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp =================================================================== --- llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp +++ llvm/trunk/lib/Transforms/Vectorize/BBVectorize.cpp @@ -3148,7 +3148,7 @@ 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]);