use ArgOperand API (some hunks I could split)

llvm-svn: 106824
This commit is contained in:
Gabor Greif 2010-06-25 07:57:14 +00:00
parent 7e08d99fd4
commit d2559bceee
2 changed files with 14 additions and 14 deletions

View File

@ -189,8 +189,8 @@ Instruction *InstCombiner::SimplifyMemTransfer(MemIntrinsic *MI) {
SrcAlign = std::max(SrcAlign, CopyAlign); SrcAlign = std::max(SrcAlign, CopyAlign);
DstAlign = std::max(DstAlign, CopyAlign); DstAlign = std::max(DstAlign, CopyAlign);
Value *Src = Builder->CreateBitCast(MI->getOperand(2), NewSrcPtrTy); Value *Src = Builder->CreateBitCast(MI->getArgOperand(1), NewSrcPtrTy);
Value *Dest = Builder->CreateBitCast(MI->getOperand(1), NewDstPtrTy); Value *Dest = Builder->CreateBitCast(MI->getArgOperand(0), NewDstPtrTy);
Instruction *L = new LoadInst(Src, "tmp", MI->isVolatile(), SrcAlign); Instruction *L = new LoadInst(Src, "tmp", MI->isVolatile(), SrcAlign);
InsertNewInstBefore(L, *MI); InsertNewInstBefore(L, *MI);
InsertNewInstBefore(new StoreInst(L, Dest, MI->isVolatile(), DstAlign), InsertNewInstBefore(new StoreInst(L, Dest, MI->isVolatile(), DstAlign),
@ -522,10 +522,10 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
} }
// X + undef -> undef // X + undef -> undef
if (isa<UndefValue>(II->getOperand(2))) if (isa<UndefValue>(II->getArgOperand(1)))
return ReplaceInstUsesWith(CI, UndefValue::get(II->getType())); return ReplaceInstUsesWith(CI, UndefValue::get(II->getType()));
if (ConstantInt *RHS = dyn_cast<ConstantInt>(II->getOperand(2))) { if (ConstantInt *RHS = dyn_cast<ConstantInt>(II->getArgOperand(1))) {
// X + 0 -> {X, false} // X + 0 -> {X, false}
if (RHS->isZero()) { if (RHS->isZero()) {
Constant *V[] = { Constant *V[] = {
@ -541,19 +541,19 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
case Intrinsic::ssub_with_overflow: case Intrinsic::ssub_with_overflow:
// undef - X -> undef // undef - X -> undef
// X - undef -> undef // X - undef -> undef
if (isa<UndefValue>(II->getOperand(1)) || if (isa<UndefValue>(II->getArgOperand(0)) ||
isa<UndefValue>(II->getOperand(2))) isa<UndefValue>(II->getArgOperand(1)))
return ReplaceInstUsesWith(CI, UndefValue::get(II->getType())); return ReplaceInstUsesWith(CI, UndefValue::get(II->getType()));
if (ConstantInt *RHS = dyn_cast<ConstantInt>(II->getOperand(2))) { if (ConstantInt *RHS = dyn_cast<ConstantInt>(II->getArgOperand(1))) {
// X - 0 -> {X, false} // X - 0 -> {X, false}
if (RHS->isZero()) { if (RHS->isZero()) {
Constant *V[] = { Constant *V[] = {
UndefValue::get(II->getOperand(1)->getType()), UndefValue::get(II->getArgOperand(0)->getType()),
ConstantInt::getFalse(II->getContext()) ConstantInt::getFalse(II->getContext())
}; };
Constant *Struct = ConstantStruct::get(II->getContext(), V, 2, false); Constant *Struct = ConstantStruct::get(II->getContext(), V, 2, false);
return InsertValueInst::Create(Struct, II->getOperand(1), 0); return InsertValueInst::Create(Struct, II->getArgOperand(0), 0);
} }
} }
break; break;
@ -569,10 +569,10 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
} }
// X * undef -> undef // X * undef -> undef
if (isa<UndefValue>(II->getOperand(2))) if (isa<UndefValue>(II->getArgOperand(1)))
return ReplaceInstUsesWith(CI, UndefValue::get(II->getType())); return ReplaceInstUsesWith(CI, UndefValue::get(II->getType()));
if (ConstantInt *RHSI = dyn_cast<ConstantInt>(II->getOperand(2))) { if (ConstantInt *RHSI = dyn_cast<ConstantInt>(II->getArgOperand(1))) {
// X*0 -> {0, false} // X*0 -> {0, false}
if (RHSI->isZero()) if (RHSI->isZero())
return ReplaceInstUsesWith(CI, Constant::getNullValue(II->getType())); return ReplaceInstUsesWith(CI, Constant::getNullValue(II->getType()));
@ -627,10 +627,10 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
// These intrinsics only demands the 0th element of its input vector. If // These intrinsics only demands the 0th element of its input vector. If
// we can simplify the input based on that, do so now. // we can simplify the input based on that, do so now.
unsigned VWidth = unsigned VWidth =
cast<VectorType>(II->getOperand(1)->getType())->getNumElements(); cast<VectorType>(II->getArgOperand(0)->getType())->getNumElements();
APInt DemandedElts(VWidth, 1); APInt DemandedElts(VWidth, 1);
APInt UndefElts(VWidth, 0); APInt UndefElts(VWidth, 0);
if (Value *V = SimplifyDemandedVectorElts(II->getOperand(1), DemandedElts, if (Value *V = SimplifyDemandedVectorElts(II->getArgOperand(0), DemandedElts,
UndefElts)) { UndefElts)) {
II->setOperand(1, V); II->setOperand(1, V);
return II; return II;

View File

@ -450,7 +450,7 @@ static bool FindAllMemoryUses(Instruction *I,
if (CallInst *CI = dyn_cast<CallInst>(U)) { if (CallInst *CI = dyn_cast<CallInst>(U)) {
InlineAsm *IA = dyn_cast<InlineAsm>(CI->getCalledValue()); InlineAsm *IA = dyn_cast<InlineAsm>(CI->getCalledValue());
if (IA == 0) return true; if (!IA) return true;
// If this is a memory operand, we're cool, otherwise bail out. // If this is a memory operand, we're cool, otherwise bail out.
if (!IsOperandAMemoryOperand(CI, IA, I, TLI)) if (!IsOperandAMemoryOperand(CI, IA, I, TLI))