forked from OSchip/llvm-project
parent
fb363a778f
commit
0b19f5aef9
|
@ -441,8 +441,7 @@ void ObjCARCContract::tryToContractReleaseIntoStoreStrong(
|
|||
bool ObjCARCContract::tryToPeepholeInstruction(
|
||||
Function &F, Instruction *Inst, inst_iterator &Iter,
|
||||
SmallPtrSetImpl<Instruction *> &DependingInsts,
|
||||
SmallPtrSetImpl<const BasicBlock *> &Visited,
|
||||
bool &TailOkForStoreStrongs,
|
||||
SmallPtrSetImpl<const BasicBlock *> &Visited, bool &TailOkForStoreStrongs,
|
||||
const DenseMap<BasicBlock *, ColorVector> &BlockColors) {
|
||||
// Only these library routines return their argument. In particular,
|
||||
// objc_retainBlock does not necessarily return its argument.
|
||||
|
@ -488,8 +487,8 @@ bool ObjCARCContract::tryToPeepholeInstruction(
|
|||
LLVM_DEBUG(dbgs() << "Adding inline asm marker for the return value "
|
||||
"optimization.\n");
|
||||
Changed = true;
|
||||
InlineAsm *IA = InlineAsm::get(
|
||||
FunctionType::get(Type::getVoidTy(Inst->getContext()),
|
||||
InlineAsm *IA =
|
||||
InlineAsm::get(FunctionType::get(Type::getVoidTy(Inst->getContext()),
|
||||
/*isVarArg=*/false),
|
||||
RVInstMarker->getString(),
|
||||
/*Constraints=*/"", /*hasSideEffects=*/true);
|
||||
|
@ -503,8 +502,7 @@ bool ObjCARCContract::tryToPeepholeInstruction(
|
|||
// objc_initWeak(p, null) => *p = null
|
||||
CallInst *CI = cast<CallInst>(Inst);
|
||||
if (IsNullOrUndef(CI->getArgOperand(1))) {
|
||||
Value *Null =
|
||||
ConstantPointerNull::get(cast<PointerType>(CI->getType()));
|
||||
Value *Null = ConstantPointerNull::get(cast<PointerType>(CI->getType()));
|
||||
Changed = true;
|
||||
new StoreInst(Null, CI->getArgOperand(0), CI);
|
||||
|
||||
|
|
Loading…
Reference in New Issue