@@ -607,7 +607,7 @@ lowerCirAttrAsValue(mlir::Operation *parentOp, cir::GlobalViewAttr globalAttr,
607
607
auto resTy = addrOp.getType ();
608
608
auto eltTy = converter->convertType (sourceType);
609
609
addrOp = rewriter.create <mlir::LLVM::GEPOp>(loc, resTy, eltTy, addrOp,
610
- indices, true );
610
+ indices, /* inbounds */ true );
611
611
}
612
612
613
613
auto ptrTy = mlir::dyn_cast<cir::PointerType>(globalAttr.getType ());
@@ -851,8 +851,9 @@ mlir::LogicalResult CIRToLLVMPtrStrideOpLowering::matchAndRewrite(
851
851
}
852
852
}
853
853
854
- rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
855
- ptrStrideOp, resultTy, elementTy, adaptor.getBase (), index );
854
+ rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(ptrStrideOp, resultTy,
855
+ elementTy, adaptor.getBase (),
856
+ index , /* inbounds*/ true );
856
857
return mlir::success ();
857
858
}
858
859
@@ -873,8 +874,9 @@ mlir::LogicalResult CIRToLLVMBaseClassAddrOpLowering::matchAndRewrite(
873
874
}
874
875
875
876
if (baseClassOp.getAssumeNotNull ()) {
876
- rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
877
- baseClassOp, resultType, byteType, derivedAddr, offset);
877
+ rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(baseClassOp, resultType,
878
+ byteType, derivedAddr,
879
+ offset, /* inbounds*/ true );
878
880
} else {
879
881
auto loc = baseClassOp.getLoc ();
880
882
mlir::Value isNull = rewriter.create <mlir::LLVM::ICmpOp>(
@@ -900,7 +902,8 @@ mlir::LogicalResult CIRToLLVMDerivedClassAddrOpLowering::matchAndRewrite(
900
902
mlir::IntegerType::Signless);
901
903
if (derivedClassOp.getAssumeNotNull ()) {
902
904
rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(derivedClassOp, resultType,
903
- byteType, baseAddr, offset);
905
+ byteType, baseAddr, offset,
906
+ /* inbounds*/ true );
904
907
} else {
905
908
auto loc = derivedClassOp.getLoc ();
906
909
mlir::Value isNull = rewriter.create <mlir::LLVM::ICmpOp>(
@@ -974,8 +977,8 @@ mlir::LogicalResult CIRToLLVMVTTAddrPointOpLowering::matchAndRewrite(
974
977
offsets.push_back (0 );
975
978
offsets.push_back (adaptor.getOffset ());
976
979
}
977
- rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(op, resultType, eltType,
978
- llvmAddr, offsets, true );
980
+ rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
981
+ op, resultType, eltType, llvmAddr, offsets, /* inbounds */ true );
979
982
return mlir::success ();
980
983
}
981
984
@@ -1032,7 +1035,7 @@ mlir::LogicalResult CIRToLLVMCastOpLowering::matchAndRewrite(
1032
1035
auto elementTy = convertTy (ptrTy.getPointee ());
1033
1036
auto offset = llvm::SmallVector<mlir::LLVM::GEPArg>{0 };
1034
1037
rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
1035
- castOp, targetType, elementTy, sourceValue, offset);
1038
+ castOp, targetType, elementTy, sourceValue, offset, /* inbounds */ true );
1036
1039
break ;
1037
1040
}
1038
1041
case cir::CastKind::int_to_bool: {
@@ -3236,8 +3239,8 @@ mlir::LogicalResult CIRToLLVMGetMemberOpLowering::matchAndRewrite(
3236
3239
// is always zero. The second offset tell us which member it will access.
3237
3240
llvm::SmallVector<mlir::LLVM::GEPArg, 2 > offset{0 , op.getIndex ()};
3238
3241
const auto elementTy = getTypeConverter ()->convertType (structTy);
3239
- rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(op, llResTy, elementTy,
3240
- adaptor.getAddr (), offset);
3242
+ rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
3243
+ op, llResTy, elementTy, adaptor.getAddr (), offset, /* inbounds */ true );
3241
3244
return mlir::success ();
3242
3245
}
3243
3246
case cir::StructType::Union:
@@ -3337,8 +3340,8 @@ mlir::LogicalResult CIRToLLVMVTableAddrPointOpLowering::matchAndRewrite(
3337
3340
}
3338
3341
3339
3342
assert (eltType && " Shouldn't ever be missing an eltType here" );
3340
- rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(op, targetType, eltType,
3341
- symAddr, offsets, true );
3343
+ rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
3344
+ op, targetType, eltType, symAddr, offsets, /* inbounds */ true );
3342
3345
3343
3346
return mlir::success ();
3344
3347
}
@@ -3837,8 +3840,8 @@ mlir::LogicalResult CIRToLLVMPtrMaskOpLowering::matchAndRewrite(
3837
3840
mlir::Value diff = rewriter.create <mlir::LLVM::SubOp>(loc, intPtr, masked);
3838
3841
rewriter.replaceOpWithNewOp <mlir::LLVM::GEPOp>(
3839
3842
op, getTypeConverter ()->convertType (op.getType ()),
3840
- mlir::IntegerType::get (moduleOp->getContext (), 8 ), adaptor.getPtr (),
3841
- diff );
3843
+ mlir::IntegerType::get (moduleOp->getContext (), 8 ), adaptor.getPtr (), diff,
3844
+ /* inbounds */ true );
3842
3845
return mlir::success ();
3843
3846
}
3844
3847
0 commit comments