Skip to content

Commit 287c3b2

Browse files
committed
address comments
1 parent a932338 commit 287c3b2

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

mlir/lib/Target/LLVMIR/Dialect/Ptr/PtrToLLVMIRTranslation.cpp

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -59,25 +59,26 @@ convertPtrAddOp(PtrAddOp ptrAddOp, llvm::IRBuilderBase &builder,
5959
if (!basePtr || !offset)
6060
return ptrAddOp.emitError("Failed to lookup operands");
6161

62-
// Create GEP instruction for pointer arithmetic
63-
auto *gep = cast<llvm::GetElementPtrInst>(
64-
builder.CreateGEP(builder.getInt8Ty(), basePtr, {offset}));
65-
66-
// Set the appropriate flags
62+
// Create the GEP flags
63+
llvm::GEPNoWrapFlags gepFlags;
6764
switch (ptrAddOp.getFlags()) {
6865
case ptr::PtrAddFlags::none:
6966
break;
7067
case ptr::PtrAddFlags::nusw:
71-
gep->setNoWrapFlags(llvm::GEPNoWrapFlags::noUnsignedSignedWrap());
68+
gepFlags = llvm::GEPNoWrapFlags::noUnsignedSignedWrap();
7269
break;
7370
case ptr::PtrAddFlags::nuw:
74-
gep->setNoWrapFlags(llvm::GEPNoWrapFlags::noUnsignedWrap());
71+
gepFlags = llvm::GEPNoWrapFlags::noUnsignedWrap();
7572
break;
7673
case ptr::PtrAddFlags::inbounds:
77-
gep->setNoWrapFlags(llvm::GEPNoWrapFlags::inBounds());
74+
gepFlags = llvm::GEPNoWrapFlags::inBounds();
7875
break;
7976
}
8077

78+
// Create GEP instruction for pointer arithmetic
79+
llvm::Value *gep =
80+
builder.CreateGEP(builder.getInt8Ty(), basePtr, {offset}, "", gepFlags);
81+
8182
moduleTranslation.mapValue(ptrAddOp.getResult(), gep);
8283
return success();
8384
}
@@ -96,9 +97,7 @@ static LogicalResult convertLoadOp(LoadOp loadOp, llvm::IRBuilderBase &builder,
9697
return loadOp.emitError("Failed to convert result type");
9798

9899
// Create the load instruction.
99-
llvm::MaybeAlign alignment = loadOp.getAlignment()
100-
? llvm::MaybeAlign(*loadOp.getAlignment())
101-
: llvm::MaybeAlign();
100+
llvm::MaybeAlign alignment(loadOp.getAlignment().value_or(0));
102101
llvm::LoadInst *loadInst = builder.CreateAlignedLoad(
103102
resultType, ptr, alignment, loadOp.getVolatile_());
104103

@@ -147,9 +146,7 @@ convertStoreOp(StoreOp storeOp, llvm::IRBuilderBase &builder,
147146
return storeOp.emitError("Failed to lookup operands");
148147

149148
// Create the store instruction.
150-
llvm::MaybeAlign alignment = storeOp.getAlignment()
151-
? llvm::MaybeAlign(*storeOp.getAlignment())
152-
: llvm::MaybeAlign();
149+
llvm::MaybeAlign alignment(storeOp.getAlignment().value_or(0));
153150
llvm::StoreInst *storeInst =
154151
builder.CreateAlignedStore(value, ptr, alignment, storeOp.getVolatile_());
155152

@@ -221,16 +218,16 @@ class PtrDialectLLVMIRTranslationInterface
221218
LLVM::ModuleTranslation &moduleTranslation) const final {
222219

223220
return llvm::TypeSwitch<Operation *, LogicalResult>(op)
224-
.Case<PtrAddOp>([&](PtrAddOp ptrAddOp) {
221+
.Case([&](PtrAddOp ptrAddOp) {
225222
return convertPtrAddOp(ptrAddOp, builder, moduleTranslation);
226223
})
227-
.Case<LoadOp>([&](LoadOp loadOp) {
224+
.Case([&](LoadOp loadOp) {
228225
return convertLoadOp(loadOp, builder, moduleTranslation);
229226
})
230-
.Case<StoreOp>([&](StoreOp storeOp) {
227+
.Case([&](StoreOp storeOp) {
231228
return convertStoreOp(storeOp, builder, moduleTranslation);
232229
})
233-
.Case<TypeOffsetOp>([&](TypeOffsetOp typeOffsetOp) {
230+
.Case([&](TypeOffsetOp typeOffsetOp) {
234231
return convertTypeOffsetOp(typeOffsetOp, builder, moduleTranslation);
235232
})
236233
.Default([&](Operation *op) {

0 commit comments

Comments
 (0)