mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-24 08:24:33 +00:00
[C++] Use 'nullptr'. Transforms edition.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207196 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -513,7 +513,7 @@ Value *InstCombiner::SimplifyUsingDistributiveLaws(BinaryOperator &I) {
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// dyn_castNegVal - Given a 'sub' instruction, return the RHS of the instruction
|
||||
@ -531,7 +531,7 @@ Value *InstCombiner::dyn_castNegVal(Value *V) const {
|
||||
if (C->getType()->getElementType()->isIntegerTy())
|
||||
return ConstantExpr::getNeg(C);
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// dyn_castFNegVal - Given a 'fsub' instruction, return the RHS of the
|
||||
@ -550,7 +550,7 @@ Value *InstCombiner::dyn_castFNegVal(Value *V, bool IgnoreZeroSign) const {
|
||||
if (C->getType()->getElementType()->isFloatingPointTy())
|
||||
return ConstantExpr::getFNeg(C);
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static Value *FoldOperationIntoSelectOperand(Instruction &I, Value *SO,
|
||||
@ -596,13 +596,13 @@ static Value *FoldOperationIntoSelectOperand(Instruction &I, Value *SO,
|
||||
// not have a second operand.
|
||||
Instruction *InstCombiner::FoldOpIntoSelect(Instruction &Op, SelectInst *SI) {
|
||||
// Don't modify shared select instructions
|
||||
if (!SI->hasOneUse()) return 0;
|
||||
if (!SI->hasOneUse()) return nullptr;
|
||||
Value *TV = SI->getOperand(1);
|
||||
Value *FV = SI->getOperand(2);
|
||||
|
||||
if (isa<Constant>(TV) || isa<Constant>(FV)) {
|
||||
// Bool selects with constant operands can be folded to logical ops.
|
||||
if (SI->getType()->isIntegerTy(1)) return 0;
|
||||
if (SI->getType()->isIntegerTy(1)) return nullptr;
|
||||
|
||||
// If it's a bitcast involving vectors, make sure it has the same number of
|
||||
// elements on both sides.
|
||||
@ -611,10 +611,10 @@ Instruction *InstCombiner::FoldOpIntoSelect(Instruction &Op, SelectInst *SI) {
|
||||
VectorType *SrcTy = dyn_cast<VectorType>(BC->getSrcTy());
|
||||
|
||||
// Verify that either both or neither are vectors.
|
||||
if ((SrcTy == NULL) != (DestTy == NULL)) return 0;
|
||||
if ((SrcTy == nullptr) != (DestTy == nullptr)) return nullptr;
|
||||
// If vectors, verify that they have the same number of elements.
|
||||
if (SrcTy && SrcTy->getNumElements() != DestTy->getNumElements())
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Value *SelectTrueVal = FoldOperationIntoSelectOperand(Op, TV, this);
|
||||
@ -623,7 +623,7 @@ Instruction *InstCombiner::FoldOpIntoSelect(Instruction &Op, SelectInst *SI) {
|
||||
return SelectInst::Create(SI->getCondition(),
|
||||
SelectTrueVal, SelectFalseVal);
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
@ -635,7 +635,7 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
|
||||
PHINode *PN = cast<PHINode>(I.getOperand(0));
|
||||
unsigned NumPHIValues = PN->getNumIncomingValues();
|
||||
if (NumPHIValues == 0)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// We normally only transform phis with a single use. However, if a PHI has
|
||||
// multiple uses and they are all the same operation, we can fold *all* of the
|
||||
@ -645,7 +645,7 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
|
||||
for (User *U : PN->users()) {
|
||||
Instruction *UI = cast<Instruction>(U);
|
||||
if (UI != &I && !I.isIdenticalTo(UI))
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
// Otherwise, we can replace *all* users with the new PHI we form.
|
||||
}
|
||||
@ -655,14 +655,14 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
|
||||
// remember the BB it is in. If there is more than one or if *it* is a PHI,
|
||||
// bail out. We don't do arbitrary constant expressions here because moving
|
||||
// their computation can be expensive without a cost model.
|
||||
BasicBlock *NonConstBB = 0;
|
||||
BasicBlock *NonConstBB = nullptr;
|
||||
for (unsigned i = 0; i != NumPHIValues; ++i) {
|
||||
Value *InVal = PN->getIncomingValue(i);
|
||||
if (isa<Constant>(InVal) && !isa<ConstantExpr>(InVal))
|
||||
continue;
|
||||
|
||||
if (isa<PHINode>(InVal)) return 0; // Itself a phi.
|
||||
if (NonConstBB) return 0; // More than one non-const value.
|
||||
if (isa<PHINode>(InVal)) return nullptr; // Itself a phi.
|
||||
if (NonConstBB) return nullptr; // More than one non-const value.
|
||||
|
||||
NonConstBB = PN->getIncomingBlock(i);
|
||||
|
||||
@ -670,22 +670,22 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
|
||||
// insert a computation after it without breaking the edge.
|
||||
if (InvokeInst *II = dyn_cast<InvokeInst>(InVal))
|
||||
if (II->getParent() == NonConstBB)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// If the incoming non-constant value is in I's block, we will remove one
|
||||
// instruction, but insert another equivalent one, leading to infinite
|
||||
// instcombine.
|
||||
if (NonConstBB == I.getParent())
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// If there is exactly one non-constant value, we can insert a copy of the
|
||||
// operation in that block. However, if this is a critical edge, we would be
|
||||
// inserting the computation one some other paths (e.g. inside a loop). Only
|
||||
// do this if the pred block is unconditionally branching into the phi block.
|
||||
if (NonConstBB != 0) {
|
||||
if (NonConstBB != nullptr) {
|
||||
BranchInst *BI = dyn_cast<BranchInst>(NonConstBB->getTerminator());
|
||||
if (!BI || !BI->isUnconditional()) return 0;
|
||||
if (!BI || !BI->isUnconditional()) return nullptr;
|
||||
}
|
||||
|
||||
// Okay, we can do the transformation: create the new PHI node.
|
||||
@ -709,7 +709,7 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
|
||||
BasicBlock *ThisBB = PN->getIncomingBlock(i);
|
||||
Value *TrueVInPred = TrueV->DoPHITranslation(PhiTransBB, ThisBB);
|
||||
Value *FalseVInPred = FalseV->DoPHITranslation(PhiTransBB, ThisBB);
|
||||
Value *InV = 0;
|
||||
Value *InV = nullptr;
|
||||
// Beware of ConstantExpr: it may eventually evaluate to getNullValue,
|
||||
// even if currently isNullValue gives false.
|
||||
Constant *InC = dyn_cast<Constant>(PN->getIncomingValue(i));
|
||||
@ -723,7 +723,7 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
|
||||
} else if (CmpInst *CI = dyn_cast<CmpInst>(&I)) {
|
||||
Constant *C = cast<Constant>(I.getOperand(1));
|
||||
for (unsigned i = 0; i != NumPHIValues; ++i) {
|
||||
Value *InV = 0;
|
||||
Value *InV = nullptr;
|
||||
if (Constant *InC = dyn_cast<Constant>(PN->getIncomingValue(i)))
|
||||
InV = ConstantExpr::getCompare(CI->getPredicate(), InC, C);
|
||||
else if (isa<ICmpInst>(CI))
|
||||
@ -737,7 +737,7 @@ Instruction *InstCombiner::FoldOpIntoPhi(Instruction &I) {
|
||||
} else if (I.getNumOperands() == 2) {
|
||||
Constant *C = cast<Constant>(I.getOperand(1));
|
||||
for (unsigned i = 0; i != NumPHIValues; ++i) {
|
||||
Value *InV = 0;
|
||||
Value *InV = nullptr;
|
||||
if (Constant *InC = dyn_cast<Constant>(PN->getIncomingValue(i)))
|
||||
InV = ConstantExpr::get(I.getOpcode(), InC, C);
|
||||
else
|
||||
@ -777,11 +777,11 @@ Type *InstCombiner::FindElementAtOffset(Type *PtrTy, int64_t Offset,
|
||||
assert(PtrTy->isPtrOrPtrVectorTy());
|
||||
|
||||
if (!DL)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
Type *Ty = PtrTy->getPointerElementType();
|
||||
if (!Ty->isSized())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Start with the index over the outer type. Note that the type size
|
||||
// might be zero (even if the offset isn't zero) if the indexed type
|
||||
@ -807,7 +807,7 @@ Type *InstCombiner::FindElementAtOffset(Type *PtrTy, int64_t Offset,
|
||||
while (Offset) {
|
||||
// Indexing into tail padding between struct/array elements.
|
||||
if (uint64_t(Offset*8) >= DL->getTypeSizeInBits(Ty))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
if (StructType *STy = dyn_cast<StructType>(Ty)) {
|
||||
const StructLayout *SL = DL->getStructLayout(STy);
|
||||
@ -828,7 +828,7 @@ Type *InstCombiner::FindElementAtOffset(Type *PtrTy, int64_t Offset,
|
||||
Ty = AT->getElementType();
|
||||
} else {
|
||||
// Otherwise, we can't index into the middle of this atomic type, bail.
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@ -860,7 +860,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
|
||||
// If Scale is zero then it does not divide Val.
|
||||
if (Scale.isMinValue())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Look through chains of multiplications, searching for a constant that is
|
||||
// divisible by Scale. For example, descaling X*(Y*(Z*4)) by a factor of 4
|
||||
@ -903,7 +903,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
APInt::sdivrem(CI->getValue(), Scale, Quotient, Remainder);
|
||||
if (!Remainder.isMinValue())
|
||||
// Not divisible by Scale.
|
||||
return 0;
|
||||
return nullptr;
|
||||
// Replace with the quotient in the parent.
|
||||
Op = ConstantInt::get(CI->getType(), Quotient);
|
||||
NoSignedWrap = true;
|
||||
@ -916,7 +916,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
// Multiplication.
|
||||
NoSignedWrap = BO->hasNoSignedWrap();
|
||||
if (RequireNoSignedWrap && !NoSignedWrap)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// There are three cases for multiplication: multiplication by exactly
|
||||
// the scale, multiplication by a constant different to the scale, and
|
||||
@ -935,7 +935,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
|
||||
// Otherwise drill down into the constant.
|
||||
if (!Op->hasOneUse())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
Parent = std::make_pair(BO, 1);
|
||||
continue;
|
||||
@ -944,7 +944,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
// Multiplication by something else. Drill down into the left-hand side
|
||||
// since that's where the reassociate pass puts the good stuff.
|
||||
if (!Op->hasOneUse())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
Parent = std::make_pair(BO, 0);
|
||||
continue;
|
||||
@ -955,7 +955,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
// Multiplication by a power of 2.
|
||||
NoSignedWrap = BO->hasNoSignedWrap();
|
||||
if (RequireNoSignedWrap && !NoSignedWrap)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
Value *LHS = BO->getOperand(0);
|
||||
int32_t Amt = cast<ConstantInt>(BO->getOperand(1))->
|
||||
@ -969,7 +969,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
break;
|
||||
}
|
||||
if (Amt < logScale || !Op->hasOneUse())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Multiplication by more than the scale. Reduce the multiplying amount
|
||||
// by the scale in the parent.
|
||||
@ -980,7 +980,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
}
|
||||
|
||||
if (!Op->hasOneUse())
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
if (CastInst *Cast = dyn_cast<CastInst>(Op)) {
|
||||
if (Cast->getOpcode() == Instruction::SExt) {
|
||||
@ -994,7 +994,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
// Scale and the multiplication Y * SmallScale should not overflow.
|
||||
if (SmallScale.sext(Scale.getBitWidth()) != Scale)
|
||||
// SmallScale does not sign-extend to Scale.
|
||||
return 0;
|
||||
return nullptr;
|
||||
assert(SmallScale.exactLogBase2() == logScale);
|
||||
// Require that Y * SmallScale must not overflow.
|
||||
RequireNoSignedWrap = true;
|
||||
@ -1013,7 +1013,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
// trunc (Y * sext Scale) does not, so nsw flags need to be cleared
|
||||
// from this point up in the expression (see later).
|
||||
if (RequireNoSignedWrap)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Drill down through the cast.
|
||||
unsigned LargeSize = Cast->getSrcTy()->getPrimitiveSizeInBits();
|
||||
@ -1027,7 +1027,7 @@ Value *InstCombiner::Descale(Value *Val, APInt Scale, bool &NoSignedWrap) {
|
||||
}
|
||||
|
||||
// Unsupported expression, bail out.
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// We know that we can successfully descale, so from here on we can safely
|
||||
@ -1131,7 +1131,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
||||
//
|
||||
if (GEPOperator *Src = dyn_cast<GEPOperator>(PtrOp)) {
|
||||
if (!shouldMergeGEPs(*cast<GEPOperator>(&GEP), *Src))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Note that if our source is a gep chain itself then we wait for that
|
||||
// chain to be resolved before we perform this transformation. This
|
||||
@ -1139,7 +1139,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
||||
if (GEPOperator *SrcGEP =
|
||||
dyn_cast<GEPOperator>(Src->getOperand(0)))
|
||||
if (SrcGEP->getNumOperands() == 2 && shouldMergeGEPs(*Src, *SrcGEP))
|
||||
return 0; // Wait until our source is folded to completion.
|
||||
return nullptr; // Wait until our source is folded to completion.
|
||||
|
||||
SmallVector<Value*, 8> Indices;
|
||||
|
||||
@ -1167,7 +1167,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
||||
// intptr_t). Just avoid transforming this until the input has been
|
||||
// normalized.
|
||||
if (SO1->getType() != GO1->getType())
|
||||
return 0;
|
||||
return nullptr;
|
||||
Sum = Builder->CreateAdd(SO1, GO1, PtrOp->getName()+".sum");
|
||||
}
|
||||
|
||||
@ -1217,7 +1217,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
||||
|
||||
// We do not handle pointer-vector geps here.
|
||||
if (!StrippedPtrTy)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
if (StrippedPtr != PtrOp) {
|
||||
bool HasZeroPointerIndex = false;
|
||||
@ -1385,7 +1385,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
||||
}
|
||||
|
||||
if (!DL)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
/// See if we can simplify:
|
||||
/// X = bitcast A* to B*
|
||||
@ -1437,7 +1437,7 @@ Instruction *InstCombiner::visitGetElementPtrInst(GetElementPtrInst &GEP) {
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static bool
|
||||
@ -1552,7 +1552,7 @@ Instruction *InstCombiner::visitAllocSite(Instruction &MI) {
|
||||
}
|
||||
return EraseInstFromFunction(MI);
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// \brief Move the call to free before a NULL test.
|
||||
@ -1581,30 +1581,30 @@ tryToMoveFreeBeforeNullTest(CallInst &FI) {
|
||||
// would duplicate the call to free in each predecessor and it may
|
||||
// not be profitable even for code size.
|
||||
if (!PredBB)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Validate constraint #2: Does this block contains only the call to
|
||||
// free and an unconditional branch?
|
||||
// FIXME: We could check if we can speculate everything in the
|
||||
// predecessor block
|
||||
if (FreeInstrBB->size() != 2)
|
||||
return 0;
|
||||
return nullptr;
|
||||
BasicBlock *SuccBB;
|
||||
if (!match(FreeInstrBB->getTerminator(), m_UnconditionalBr(SuccBB)))
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Validate the rest of constraint #1 by matching on the pred branch.
|
||||
TerminatorInst *TI = PredBB->getTerminator();
|
||||
BasicBlock *TrueBB, *FalseBB;
|
||||
ICmpInst::Predicate Pred;
|
||||
if (!match(TI, m_Br(m_ICmp(Pred, m_Specific(Op), m_Zero()), TrueBB, FalseBB)))
|
||||
return 0;
|
||||
return nullptr;
|
||||
if (Pred != ICmpInst::ICMP_EQ && Pred != ICmpInst::ICMP_NE)
|
||||
return 0;
|
||||
return nullptr;
|
||||
|
||||
// Validate constraint #3: Ensure the null case just falls through.
|
||||
if (SuccBB != (Pred == ICmpInst::ICMP_EQ ? TrueBB : FalseBB))
|
||||
return 0;
|
||||
return nullptr;
|
||||
assert(FreeInstrBB == (Pred == ICmpInst::ICMP_EQ ? FalseBB : TrueBB) &&
|
||||
"Broken CFG: missing edge from predecessor to successor");
|
||||
|
||||
@ -1639,14 +1639,14 @@ Instruction *InstCombiner::visitFree(CallInst &FI) {
|
||||
if (Instruction *I = tryToMoveFreeBeforeNullTest(FI))
|
||||
return I;
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Instruction *InstCombiner::visitBranchInst(BranchInst &BI) {
|
||||
// Change br (not X), label True, label False to: br X, label False, True
|
||||
Value *X = 0;
|
||||
Value *X = nullptr;
|
||||
BasicBlock *TrueDest;
|
||||
BasicBlock *FalseDest;
|
||||
if (match(&BI, m_Br(m_Not(m_Value(X)), TrueDest, FalseDest)) &&
|
||||
@ -1689,7 +1689,7 @@ Instruction *InstCombiner::visitBranchInst(BranchInst &BI) {
|
||||
return &BI;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Instruction *InstCombiner::visitSwitchInst(SwitchInst &SI) {
|
||||
@ -1713,7 +1713,7 @@ Instruction *InstCombiner::visitSwitchInst(SwitchInst &SI) {
|
||||
return &SI;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Instruction *InstCombiner::visitExtractValueInst(ExtractValueInst &EV) {
|
||||
@ -1730,7 +1730,7 @@ Instruction *InstCombiner::visitExtractValueInst(ExtractValueInst &EV) {
|
||||
// first index
|
||||
return ExtractValueInst::Create(C2, EV.getIndices().slice(1));
|
||||
}
|
||||
return 0; // Can't handle other constants
|
||||
return nullptr; // Can't handle other constants
|
||||
}
|
||||
|
||||
if (InsertValueInst *IV = dyn_cast<InsertValueInst>(Agg)) {
|
||||
@ -1863,7 +1863,7 @@ Instruction *InstCombiner::visitExtractValueInst(ExtractValueInst &EV) {
|
||||
// and if again single-use then via load (gep (gep)) to load (gep).
|
||||
// However, double extracts from e.g. function arguments or return values
|
||||
// aren't handled yet.
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
enum Personality_Type {
|
||||
@ -2202,7 +2202,7 @@ Instruction *InstCombiner::visitLandingPadInst(LandingPadInst &LI) {
|
||||
return &LI;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
@ -2295,7 +2295,7 @@ static bool AddReachableCodeToWorklist(BasicBlock *BB,
|
||||
for (User::op_iterator i = Inst->op_begin(), e = Inst->op_end();
|
||||
i != e; ++i) {
|
||||
ConstantExpr *CE = dyn_cast<ConstantExpr>(i);
|
||||
if (CE == 0) continue;
|
||||
if (CE == nullptr) continue;
|
||||
|
||||
Constant*& FoldRes = FoldedConstants[CE];
|
||||
if (!FoldRes)
|
||||
@ -2399,7 +2399,7 @@ bool InstCombiner::DoOneIteration(Function &F, unsigned Iteration) {
|
||||
|
||||
while (!Worklist.isEmpty()) {
|
||||
Instruction *I = Worklist.RemoveOne();
|
||||
if (I == 0) continue; // skip null values.
|
||||
if (I == nullptr) continue; // skip null values.
|
||||
|
||||
// Check to see if we can DCE the instruction.
|
||||
if (isInstructionTriviallyDead(I, TLI)) {
|
||||
@ -2541,7 +2541,7 @@ bool InstCombiner::runOnFunction(Function &F) {
|
||||
return false;
|
||||
|
||||
DataLayoutPass *DLP = getAnalysisIfAvailable<DataLayoutPass>();
|
||||
DL = DLP ? &DLP->getDataLayout() : 0;
|
||||
DL = DLP ? &DLP->getDataLayout() : nullptr;
|
||||
TLI = &getAnalysis<TargetLibraryInfo>();
|
||||
// Minimizing size?
|
||||
MinimizeSize = F.getAttributes().hasAttribute(AttributeSet::FunctionIndex,
|
||||
@ -2568,7 +2568,7 @@ bool InstCombiner::runOnFunction(Function &F) {
|
||||
while (DoOneIteration(F, Iteration++))
|
||||
EverMadeChange = true;
|
||||
|
||||
Builder = 0;
|
||||
Builder = nullptr;
|
||||
return EverMadeChange;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user