forked from OSchip/llvm-project
[Alignment][NFC] Convert StoreInst to MaybeAlign
Summary: This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 Reviewers: courbet Subscribers: hiraditya, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D69303 llvm-svn: 375499
This commit is contained in:
parent
734c74ba14
commit
5b99c189b3
|
@ -337,17 +337,15 @@ public:
|
|||
StoreInst(Value *Val, Value *Ptr, bool isVolatile = false,
|
||||
Instruction *InsertBefore = nullptr);
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile, BasicBlock *InsertAtEnd);
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile,
|
||||
unsigned Align, Instruction *InsertBefore = nullptr);
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile,
|
||||
unsigned Align, BasicBlock *InsertAtEnd);
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile,
|
||||
unsigned Align, AtomicOrdering Order,
|
||||
SyncScope::ID SSID = SyncScope::System,
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile, MaybeAlign Align,
|
||||
Instruction *InsertBefore = nullptr);
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile,
|
||||
unsigned Align, AtomicOrdering Order, SyncScope::ID SSID,
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile, MaybeAlign Align,
|
||||
BasicBlock *InsertAtEnd);
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile, MaybeAlign Align,
|
||||
AtomicOrdering Order, SyncScope::ID SSID = SyncScope::System,
|
||||
Instruction *InsertBefore = nullptr);
|
||||
StoreInst(Value *Val, Value *Ptr, bool isVolatile, MaybeAlign Align,
|
||||
AtomicOrdering Order, SyncScope::ID SSID, BasicBlock *InsertAtEnd);
|
||||
|
||||
// allocate space for exactly two operands
|
||||
void *operator new(size_t s) {
|
||||
|
|
|
@ -7016,8 +7016,7 @@ int LLParser::ParseStore(Instruction *&Inst, PerFunctionState &PFS) {
|
|||
Ordering == AtomicOrdering::AcquireRelease)
|
||||
return Error(Loc, "atomic store cannot use Acquire ordering");
|
||||
|
||||
Inst = new StoreInst(Val, Ptr, isVolatile, Alignment ? Alignment->value() : 0,
|
||||
Ordering, SSID);
|
||||
Inst = new StoreInst(Val, Ptr, isVolatile, Alignment, Ordering, SSID);
|
||||
return AteExtraComma ? InstExtraComma : InstNormal;
|
||||
}
|
||||
|
||||
|
|
|
@ -4851,8 +4851,7 @@ Error BitcodeReader::parseFunctionBody(Function *F) {
|
|||
MaybeAlign Align;
|
||||
if (Error Err = parseAlignmentValue(Record[OpNum], Align))
|
||||
return Err;
|
||||
I = new StoreInst(Val, Ptr, Record[OpNum + 1],
|
||||
Align ? Align->value() : 0);
|
||||
I = new StoreInst(Val, Ptr, Record[OpNum + 1], Align);
|
||||
InstructionList.push_back(I);
|
||||
break;
|
||||
}
|
||||
|
@ -4885,8 +4884,7 @@ Error BitcodeReader::parseFunctionBody(Function *F) {
|
|||
MaybeAlign Align;
|
||||
if (Error Err = parseAlignmentValue(Record[OpNum], Align))
|
||||
return Err;
|
||||
I = new StoreInst(Val, Ptr, Record[OpNum + 1], Align ? Align->value() : 0,
|
||||
Ordering, SSID);
|
||||
I = new StoreInst(Val, Ptr, Record[OpNum + 1], Align, Ordering, SSID);
|
||||
InstructionList.push_back(I);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1371,50 +1371,46 @@ StoreInst::StoreInst(Value *val, Value *addr, BasicBlock *InsertAtEnd)
|
|||
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile,
|
||||
Instruction *InsertBefore)
|
||||
: StoreInst(val, addr, isVolatile, /*Align=*/0, InsertBefore) {}
|
||||
: StoreInst(val, addr, isVolatile, /*Align=*/None, InsertBefore) {}
|
||||
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile,
|
||||
BasicBlock *InsertAtEnd)
|
||||
: StoreInst(val, addr, isVolatile, /*Align=*/0, InsertAtEnd) {}
|
||||
: StoreInst(val, addr, isVolatile, /*Align=*/None, InsertAtEnd) {}
|
||||
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile, unsigned Align,
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile, MaybeAlign Align,
|
||||
Instruction *InsertBefore)
|
||||
: StoreInst(val, addr, isVolatile, Align, AtomicOrdering::NotAtomic,
|
||||
SyncScope::System, InsertBefore) {}
|
||||
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile, unsigned Align,
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile, MaybeAlign Align,
|
||||
BasicBlock *InsertAtEnd)
|
||||
: StoreInst(val, addr, isVolatile, Align, AtomicOrdering::NotAtomic,
|
||||
SyncScope::System, InsertAtEnd) {}
|
||||
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile,
|
||||
unsigned Align, AtomicOrdering Order,
|
||||
SyncScope::ID SSID,
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile, MaybeAlign Align,
|
||||
AtomicOrdering Order, SyncScope::ID SSID,
|
||||
Instruction *InsertBefore)
|
||||
: Instruction(Type::getVoidTy(val->getContext()), Store,
|
||||
OperandTraits<StoreInst>::op_begin(this),
|
||||
OperandTraits<StoreInst>::operands(this),
|
||||
InsertBefore) {
|
||||
: Instruction(Type::getVoidTy(val->getContext()), Store,
|
||||
OperandTraits<StoreInst>::op_begin(this),
|
||||
OperandTraits<StoreInst>::operands(this), InsertBefore) {
|
||||
Op<0>() = val;
|
||||
Op<1>() = addr;
|
||||
setVolatile(isVolatile);
|
||||
setAlignment(MaybeAlign(Align));
|
||||
setAlignment(Align);
|
||||
setAtomic(Order, SSID);
|
||||
AssertOK();
|
||||
}
|
||||
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile,
|
||||
unsigned Align, AtomicOrdering Order,
|
||||
SyncScope::ID SSID,
|
||||
StoreInst::StoreInst(Value *val, Value *addr, bool isVolatile, MaybeAlign Align,
|
||||
AtomicOrdering Order, SyncScope::ID SSID,
|
||||
BasicBlock *InsertAtEnd)
|
||||
: Instruction(Type::getVoidTy(val->getContext()), Store,
|
||||
OperandTraits<StoreInst>::op_begin(this),
|
||||
OperandTraits<StoreInst>::operands(this),
|
||||
InsertAtEnd) {
|
||||
: Instruction(Type::getVoidTy(val->getContext()), Store,
|
||||
OperandTraits<StoreInst>::op_begin(this),
|
||||
OperandTraits<StoreInst>::operands(this), InsertAtEnd) {
|
||||
Op<0>() = val;
|
||||
Op<1>() = addr;
|
||||
setVolatile(isVolatile);
|
||||
setAlignment(MaybeAlign(Align));
|
||||
setAlignment(Align);
|
||||
setAtomic(Order, SSID);
|
||||
AssertOK();
|
||||
}
|
||||
|
@ -4146,8 +4142,8 @@ LoadInst *LoadInst::cloneImpl() const {
|
|||
|
||||
StoreInst *StoreInst::cloneImpl() const {
|
||||
return new StoreInst(getOperand(0), getOperand(1), isVolatile(),
|
||||
getAlignment(), getOrdering(), getSyncScopeID());
|
||||
|
||||
MaybeAlign(getAlignment()), getOrdering(),
|
||||
getSyncScopeID());
|
||||
}
|
||||
|
||||
AtomicCmpXchgInst *AtomicCmpXchgInst::cloneImpl() const {
|
||||
|
|
|
@ -891,8 +891,8 @@ OptimizeGlobalAddressOfMalloc(GlobalVariable *GV, CallInst *CI, Type *AllocTy,
|
|||
while (!GV->use_empty()) {
|
||||
if (StoreInst *SI = dyn_cast<StoreInst>(GV->user_back())) {
|
||||
// The global is initialized when the store to it occurs.
|
||||
new StoreInst(ConstantInt::getTrue(GV->getContext()), InitBool, false, 0,
|
||||
SI->getOrdering(), SI->getSyncScopeID(), SI);
|
||||
new StoreInst(ConstantInt::getTrue(GV->getContext()), InitBool, false,
|
||||
None, SI->getOrdering(), SI->getSyncScopeID(), SI);
|
||||
SI->eraseFromParent();
|
||||
continue;
|
||||
}
|
||||
|
@ -1726,7 +1726,7 @@ static bool TryToShrinkGlobalToBoolean(GlobalVariable *GV, Constant *OtherVal) {
|
|||
}
|
||||
}
|
||||
StoreInst *NSI =
|
||||
new StoreInst(StoreVal, NewGV, false, 0, SI->getOrdering(),
|
||||
new StoreInst(StoreVal, NewGV, false, None, SI->getOrdering(),
|
||||
SI->getSyncScopeID(), SI);
|
||||
NSI->setDebugLoc(SI->getDebugLoc());
|
||||
} else {
|
||||
|
|
|
@ -1085,7 +1085,8 @@ Instruction *InstCombiner::simplifyMaskedStore(IntrinsicInst &II) {
|
|||
// If the mask is all ones, this is a plain vector store of the 1st argument.
|
||||
if (ConstMask->isAllOnesValue()) {
|
||||
Value *StorePtr = II.getArgOperand(1);
|
||||
unsigned Alignment = cast<ConstantInt>(II.getArgOperand(2))->getZExtValue();
|
||||
MaybeAlign Alignment(
|
||||
cast<ConstantInt>(II.getArgOperand(2))->getZExtValue());
|
||||
return new StoreInst(II.getArgOperand(0), StorePtr, false, Alignment);
|
||||
}
|
||||
|
||||
|
@ -2360,7 +2361,7 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
|
|||
// Turn PPC VSX stores into normal stores.
|
||||
Type *OpPtrTy = PointerType::getUnqual(II->getArgOperand(0)->getType());
|
||||
Value *Ptr = Builder.CreateBitCast(II->getArgOperand(1), OpPtrTy);
|
||||
return new StoreInst(II->getArgOperand(0), Ptr, false, 1);
|
||||
return new StoreInst(II->getArgOperand(0), Ptr, false, Align::None());
|
||||
}
|
||||
case Intrinsic::ppc_qpx_qvlfs:
|
||||
// Turn PPC QPX qvlfs -> load if the pointer is known aligned.
|
||||
|
|
|
@ -1579,8 +1579,8 @@ bool InstCombiner::mergeStoreIntoSuccessor(StoreInst &SI) {
|
|||
|
||||
// Advance to a place where it is safe to insert the new store and insert it.
|
||||
BBI = DestBB->getFirstInsertionPt();
|
||||
StoreInst *NewSI = new StoreInst(MergedVal, SI.getOperand(1),
|
||||
SI.isVolatile(), SI.getAlignment(),
|
||||
StoreInst *NewSI = new StoreInst(MergedVal, SI.getOperand(1), SI.isVolatile(),
|
||||
MaybeAlign(SI.getAlignment()),
|
||||
SI.getOrdering(), SI.getSyncScopeID());
|
||||
InsertNewInstBefore(NewSI, *BBI);
|
||||
NewSI->setDebugLoc(MergedLoc);
|
||||
|
|
|
@ -1254,8 +1254,9 @@ static bool eliminateDeadStores(BasicBlock &BB, AliasAnalysis *AA,
|
|||
|
||||
auto *SI = new StoreInst(
|
||||
ConstantInt::get(Earlier->getValueOperand()->getType(), Merged),
|
||||
Earlier->getPointerOperand(), false, Earlier->getAlignment(),
|
||||
Earlier->getOrdering(), Earlier->getSyncScopeID(), DepWrite);
|
||||
Earlier->getPointerOperand(), false,
|
||||
MaybeAlign(Earlier->getAlignment()), Earlier->getOrdering(),
|
||||
Earlier->getSyncScopeID(), DepWrite);
|
||||
|
||||
unsigned MDToKeep[] = {LLVMContext::MD_dbg, LLVMContext::MD_tbaa,
|
||||
LLVMContext::MD_alias_scope,
|
||||
|
|
Loading…
Reference in New Issue