mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-12 22:30:12 +00:00
getParent() ^ 3 == getModule() ; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255511 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a4527729ac
commit
59dc7be11d
@ -830,7 +830,7 @@ static bool CombineUAddWithOverflow(CmpInst *CI) {
|
||||
assert(*AddI->user_begin() == CI && "expected!");
|
||||
#endif
|
||||
|
||||
Module *M = CI->getParent()->getParent()->getParent();
|
||||
Module *M = CI->getModule();
|
||||
Value *F = Intrinsic::getDeclaration(M, Intrinsic::uadd_with_overflow, Ty);
|
||||
|
||||
auto *InsertPt = AddI->hasOneUse() ? CI : AddI;
|
||||
|
@ -67,7 +67,7 @@ static CallInst *ReplaceCallWith(const char *NewFn, CallInst *CI,
|
||||
Type *RetTy) {
|
||||
// If we haven't already looked up this function, check to see if the
|
||||
// program already contains a function with this name.
|
||||
Module *M = CI->getParent()->getParent()->getParent();
|
||||
Module *M = CI->getModule();
|
||||
// Get or insert the definition now.
|
||||
std::vector<Type *> ParamTys;
|
||||
for (ArgIt I = ArgBegin; I != ArgEnd; ++I)
|
||||
@ -596,7 +596,7 @@ bool IntrinsicLowering::LowerToByteSwap(CallInst *CI) {
|
||||
return false;
|
||||
|
||||
// Okay, we can do this xform, do so now.
|
||||
Module *M = CI->getParent()->getParent()->getParent();
|
||||
Module *M = CI->getModule();
|
||||
Constant *Int = Intrinsic::getDeclaration(M, Intrinsic::bswap, Ty);
|
||||
|
||||
Value *Op = CI->getArgOperand(0);
|
||||
|
@ -150,8 +150,7 @@ Value *InstCombiner::SimplifyBSwap(BinaryOperator &I) {
|
||||
else //if (Op == Instruction::Xor)
|
||||
BinOp = Builder->CreateXor(NewLHS, NewRHS);
|
||||
|
||||
Module *M = I.getParent()->getParent()->getParent();
|
||||
Function *F = Intrinsic::getDeclaration(M, Intrinsic::bswap, ITy);
|
||||
Function *F = Intrinsic::getDeclaration(I.getModule(), Intrinsic::bswap, ITy);
|
||||
return Builder->CreateCall(F, BinOp);
|
||||
}
|
||||
|
||||
@ -1528,7 +1527,7 @@ Instruction *InstCombiner::visitAnd(BinaryOperator &I) {
|
||||
ConstantInt *CI;
|
||||
if (isa<BitCastInst>(Op0C) && SrcTy->isFloatingPointTy() &&
|
||||
match(Op1, m_ConstantInt(CI)) && CI->isMaxValue(true)) {
|
||||
Module *M = I.getParent()->getParent()->getParent();
|
||||
Module *M = I.getModule();
|
||||
Function *Fabs = Intrinsic::getDeclaration(M, Intrinsic::fabs, SrcTy);
|
||||
Value *Call = Builder->CreateCall(Fabs, Op0COp, "fabs");
|
||||
return CastInst::CreateBitOrPointerCast(Call, I.getType());
|
||||
@ -1747,9 +1746,8 @@ Instruction *InstCombiner::MatchBSwapOrBitReverse(BinaryOperator &I) {
|
||||
Intrin = Intrinsic::bitreverse;
|
||||
else
|
||||
return nullptr;
|
||||
|
||||
Module *M = I.getParent()->getParent()->getParent();
|
||||
Function *F = Intrinsic::getDeclaration(M, Intrin, ITy);
|
||||
|
||||
Function *F = Intrinsic::getDeclaration(I.getModule(), Intrin, ITy);
|
||||
return CallInst::Create(F, V);
|
||||
}
|
||||
|
||||
|
@ -461,7 +461,7 @@ static Value *SimplifyX86extrq(IntrinsicInst &II, Value *Op0,
|
||||
// If we were an EXTRQ call, we'll save registers if we convert to EXTRQI.
|
||||
if (II.getIntrinsicID() == Intrinsic::x86_sse4a_extrq) {
|
||||
Value *Args[] = {Op0, CILength, CIIndex};
|
||||
Module *M = II.getParent()->getParent()->getParent();
|
||||
Module *M = II.getModule();
|
||||
Value *F = Intrinsic::getDeclaration(M, Intrinsic::x86_sse4a_extrqi);
|
||||
return Builder.CreateCall(F, Args);
|
||||
}
|
||||
@ -563,7 +563,7 @@ static Value *SimplifyX86insertq(IntrinsicInst &II, Value *Op0, Value *Op1,
|
||||
Constant *CIIndex = ConstantInt::get(IntTy8, Index, false);
|
||||
|
||||
Value *Args[] = {Op0, Op1, CILength, CIIndex};
|
||||
Module *M = II.getParent()->getParent()->getParent();
|
||||
Module *M = II.getModule();
|
||||
Value *F = Intrinsic::getDeclaration(M, Intrinsic::x86_sse4a_insertqi);
|
||||
return Builder.CreateCall(F, Args);
|
||||
}
|
||||
@ -725,7 +725,7 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
|
||||
if (MemMoveInst *MMI = dyn_cast<MemMoveInst>(MI)) {
|
||||
if (GlobalVariable *GVSrc = dyn_cast<GlobalVariable>(MMI->getSource()))
|
||||
if (GVSrc->isConstant()) {
|
||||
Module *M = CI.getParent()->getParent()->getParent();
|
||||
Module *M = CI.getModule();
|
||||
Intrinsic::ID MemCpyID = Intrinsic::memcpy;
|
||||
Type *Tys[3] = { CI.getArgOperand(0)->getType(),
|
||||
CI.getArgOperand(1)->getType(),
|
||||
|
@ -1397,9 +1397,8 @@ Instruction *InstCombiner::visitFPTrunc(FPTruncInst &CI) {
|
||||
Value *InnerTrunc = Builder->CreateFPTrunc(II->getArgOperand(0),
|
||||
CI.getType());
|
||||
Type *IntrinsicType[] = { CI.getType() };
|
||||
Function *Overload =
|
||||
Intrinsic::getDeclaration(CI.getParent()->getParent()->getParent(),
|
||||
II->getIntrinsicID(), IntrinsicType);
|
||||
Function *Overload = Intrinsic::getDeclaration(
|
||||
CI.getModule(), II->getIntrinsicID(), IntrinsicType);
|
||||
|
||||
Value *Args[] = { InnerTrunc };
|
||||
return CallInst::Create(Overload, Args, II->getName());
|
||||
|
@ -2189,11 +2189,9 @@ static Instruction *ProcessUGT_ADDCST_ADD(ICmpInst &I, Value *A, Value *B,
|
||||
// If the pattern matches, truncate the inputs to the narrower type and
|
||||
// use the sadd_with_overflow intrinsic to efficiently compute both the
|
||||
// result and the overflow bit.
|
||||
Module *M = I.getParent()->getParent()->getParent();
|
||||
|
||||
Type *NewType = IntegerType::get(OrigAdd->getContext(), NewWidth);
|
||||
Value *F = Intrinsic::getDeclaration(M, Intrinsic::sadd_with_overflow,
|
||||
NewType);
|
||||
Value *F = Intrinsic::getDeclaration(I.getModule(),
|
||||
Intrinsic::sadd_with_overflow, NewType);
|
||||
|
||||
InstCombiner::BuilderTy *Builder = IC.Builder;
|
||||
|
||||
@ -2471,7 +2469,6 @@ static Instruction *ProcessUMulZExtIdiom(ICmpInst &I, Value *MulVal,
|
||||
|
||||
InstCombiner::BuilderTy *Builder = IC.Builder;
|
||||
Builder->SetInsertPoint(MulInstr);
|
||||
Module *M = I.getParent()->getParent()->getParent();
|
||||
|
||||
// Replace: mul(zext A, zext B) --> mul.with.overflow(A, B)
|
||||
Value *MulA = A, *MulB = B;
|
||||
@ -2479,8 +2476,8 @@ static Instruction *ProcessUMulZExtIdiom(ICmpInst &I, Value *MulVal,
|
||||
MulA = Builder->CreateZExt(A, MulType);
|
||||
if (WidthB < MulWidth)
|
||||
MulB = Builder->CreateZExt(B, MulType);
|
||||
Value *F =
|
||||
Intrinsic::getDeclaration(M, Intrinsic::umul_with_overflow, MulType);
|
||||
Value *F = Intrinsic::getDeclaration(I.getModule(),
|
||||
Intrinsic::umul_with_overflow, MulType);
|
||||
CallInst *Call = Builder->CreateCall(F, {MulA, MulB}, "umul");
|
||||
IC.Worklist.Add(MulInstr);
|
||||
|
||||
|
@ -1962,7 +1962,7 @@ Instruction *InstCombiner::visitAllocSite(Instruction &MI) {
|
||||
|
||||
if (InvokeInst *II = dyn_cast<InvokeInst>(&MI)) {
|
||||
// Replace invoke with a NOP intrinsic to maintain the original CFG
|
||||
Module *M = II->getParent()->getParent()->getParent();
|
||||
Module *M = II->getModule();
|
||||
Function *F = Intrinsic::getDeclaration(M, Intrinsic::donothing);
|
||||
InvokeInst::Create(F, II->getNormalDest(), II->getUnwindDest(),
|
||||
None, "", II->getParent());
|
||||
|
@ -431,8 +431,7 @@ void SanitizerCoverageModule::InjectTraceForCmp(
|
||||
|
||||
void SanitizerCoverageModule::SetNoSanitizeMetadata(Instruction *I) {
|
||||
I->setMetadata(
|
||||
I->getParent()->getParent()->getParent()->getMDKindID("nosanitize"),
|
||||
MDNode::get(*C, None));
|
||||
I->getModule()->getMDKindID("nosanitize"), MDNode::get(*C, None));
|
||||
}
|
||||
|
||||
void SanitizerCoverageModule::InjectCoverageAtBlock(Function &F, BasicBlock &BB,
|
||||
|
@ -578,7 +578,7 @@ bool LoopIdiomRecognize::processLoopStridedStore(
|
||||
// Everything is emitted in default address space
|
||||
Type *Int8PtrTy = DestInt8PtrTy;
|
||||
|
||||
Module *M = TheStore->getParent()->getParent()->getParent();
|
||||
Module *M = TheStore->getModule();
|
||||
Value *MSP =
|
||||
M->getOrInsertFunction("memset_pattern16", Builder.getVoidTy(),
|
||||
Int8PtrTy, Int8PtrTy, IntPtr, (void *)nullptr);
|
||||
|
@ -1052,12 +1052,11 @@ bool MemCpyOpt::processMemMove(MemMoveInst *M) {
|
||||
DEBUG(dbgs() << "MemCpyOpt: Optimizing memmove -> memcpy: " << *M << "\n");
|
||||
|
||||
// If not, then we know we can transform this.
|
||||
Module *Mod = M->getParent()->getParent()->getParent();
|
||||
Type *ArgTys[3] = { M->getRawDest()->getType(),
|
||||
M->getRawSource()->getType(),
|
||||
M->getLength()->getType() };
|
||||
M->setCalledFunction(Intrinsic::getDeclaration(Mod, Intrinsic::memcpy,
|
||||
ArgTys));
|
||||
M->setCalledFunction(Intrinsic::getDeclaration(M->getModule(),
|
||||
Intrinsic::memcpy, ArgTys));
|
||||
|
||||
// MemDep may have over conservative information about this instruction, just
|
||||
// conservatively flush it from the cache.
|
||||
|
@ -832,8 +832,7 @@ InsertSafepointPoll(Instruction *InsertBefore,
|
||||
/// NOT do explicit relocation for GC support.
|
||||
static Value *ReplaceWithStatepoint(const CallSite &CS, /* to replace */
|
||||
Pass *P) {
|
||||
assert(CS.getInstruction()->getParent()->getParent()->getParent() &&
|
||||
"must be set");
|
||||
assert(CS.getInstruction()->getModule() && "must be set");
|
||||
|
||||
// TODO: technically, a pass is not allowed to get functions from within a
|
||||
// function pass since it might trigger a new function addition. Refactor
|
||||
|
@ -64,7 +64,7 @@ namespace {
|
||||
/// Print out the expression identified in the Ops list.
|
||||
///
|
||||
static void PrintOps(Instruction *I, const SmallVectorImpl<ValueEntry> &Ops) {
|
||||
Module *M = I->getParent()->getParent()->getParent();
|
||||
Module *M = I->getModule();
|
||||
dbgs() << Instruction::getOpcodeName(I->getOpcode()) << " "
|
||||
<< *Ops[0].Op->getType() << '\t';
|
||||
for (unsigned i = 0, e = Ops.size(); i != e; ++i) {
|
||||
|
@ -1917,7 +1917,7 @@ static void insertUseHolderAfter(CallSite &CS, const ArrayRef<Value *> Values,
|
||||
// No values to hold live, might as well not insert the empty holder
|
||||
return;
|
||||
|
||||
Module *M = CS.getInstruction()->getParent()->getParent()->getParent();
|
||||
Module *M = CS.getInstruction()->getModule();
|
||||
// Use a dummy vararg function to actually hold the values live
|
||||
Function *Func = cast<Function>(M->getOrInsertFunction(
|
||||
"__tmp_use", FunctionType::get(Type::getVoidTy(M->getContext()), true)));
|
||||
|
@ -4023,8 +4023,7 @@ bool SROA::splitAlloca(AllocaInst &AI, AllocaSlices &AS) {
|
||||
if (DbgDeclareInst *DbgDecl = FindAllocaDbgDeclare(&AI)) {
|
||||
auto *Var = DbgDecl->getVariable();
|
||||
auto *Expr = DbgDecl->getExpression();
|
||||
DIBuilder DIB(*AI.getParent()->getParent()->getParent(),
|
||||
/*AllowUnresolved*/ false);
|
||||
DIBuilder DIB(*AI.getModule(), /*AllowUnresolved*/ false);
|
||||
bool IsSplit = Pieces.size() > 1;
|
||||
for (auto Piece : Pieces) {
|
||||
// Create a piece expression describing the new partition or reuse AI's
|
||||
|
@ -401,8 +401,7 @@ static bool rewriteSingleStoreAlloca(AllocaInst *AI, AllocaInfo &Info,
|
||||
// Record debuginfo for the store and remove the declaration's
|
||||
// debuginfo.
|
||||
if (DbgDeclareInst *DDI = Info.DbgDeclare) {
|
||||
DIBuilder DIB(*AI->getParent()->getParent()->getParent(),
|
||||
/*AllowUnresolved*/ false);
|
||||
DIBuilder DIB(*AI->getModule(), /*AllowUnresolved*/ false);
|
||||
ConvertDebugDeclareToDebugValue(DDI, Info.OnlyStore, DIB);
|
||||
DDI->eraseFromParent();
|
||||
LBI.deleteValue(DDI);
|
||||
@ -493,8 +492,7 @@ static bool promoteSingleBlockAlloca(AllocaInst *AI, const AllocaInfo &Info,
|
||||
StoreInst *SI = cast<StoreInst>(AI->user_back());
|
||||
// Record debuginfo for the store before removing it.
|
||||
if (DbgDeclareInst *DDI = Info.DbgDeclare) {
|
||||
DIBuilder DIB(*AI->getParent()->getParent()->getParent(),
|
||||
/*AllowUnresolved*/ false);
|
||||
DIBuilder DIB(*AI->getModule(), /*AllowUnresolved*/ false);
|
||||
ConvertDebugDeclareToDebugValue(DDI, SI, DIB);
|
||||
}
|
||||
SI->eraseFromParent();
|
||||
|
@ -995,7 +995,7 @@ Value *LibCallSimplifier::optimizeUnaryDoubleFP(CallInst *CI, IRBuilder<> &B,
|
||||
|
||||
// floor((double)floatval) -> (double)floorf(floatval)
|
||||
if (Callee->isIntrinsic()) {
|
||||
Module *M = CI->getParent()->getParent()->getParent();
|
||||
Module *M = CI->getModule();
|
||||
Intrinsic::ID IID = Callee->getIntrinsicID();
|
||||
Function *F = Intrinsic::getDeclaration(M, IID, B.getFloatTy());
|
||||
V = B.CreateCall(F, V);
|
||||
|
Loading…
x
Reference in New Issue
Block a user