From 1a3db2ed16e44df24b3c49d1475493a3f421e7af Mon Sep 17 00:00:00 2001 From: Chuanqi Xu Date: Tue, 26 Nov 2024 17:42:12 +0800 Subject: [PATCH] [CIR] Correct signedness for createSignedInt --- clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h | 3 ++- .../lib/CIR/Dialect/Transforms/TargetLowering/ABIInfoImpl.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h b/clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h index b19fe5884e86..87ef2766a5c9 100644 --- a/clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h +++ b/clang/include/clang/CIR/Dialect/Builder/CIRBaseBuilder.h @@ -50,7 +50,8 @@ class CIRBaseBuilderTy : public mlir::OpBuilder { mlir::Value getSignedInt(mlir::Location loc, int64_t val, unsigned numBits) { return getConstAPSInt( - loc, llvm::APSInt(llvm::APInt(numBits, val), /*isUnsigned=*/false)); + loc, llvm::APSInt(llvm::APInt(numBits, val, /*isSigned=*/true), + /*isUnsigned=*/false)); } mlir::Value getUnsignedInt(mlir::Location loc, uint64_t val, diff --git a/clang/lib/CIR/Dialect/Transforms/TargetLowering/ABIInfoImpl.cpp b/clang/lib/CIR/Dialect/Transforms/TargetLowering/ABIInfoImpl.cpp index 66e40e6ac5d0..feac26463304 100644 --- a/clang/lib/CIR/Dialect/Transforms/TargetLowering/ABIInfoImpl.cpp +++ b/clang/lib/CIR/Dialect/Transforms/TargetLowering/ABIInfoImpl.cpp @@ -45,7 +45,7 @@ mlir::Value emitRoundPointerUpToAlignment(cir::CIRBaseBuilderTy &builder, builder.getUnsignedInt(loc, alignment - 1, /*width=*/32)); return builder.create( loc, roundUp.getType(), roundUp, - builder.getSignedInt(loc, -alignment, /*width=*/32)); + builder.getSignedInt(loc, -(signed)alignment, /*width=*/32)); } mlir::Type useFirstFieldIfTransparentUnion(mlir::Type Ty) {