https://github.com/Men-cotton updated https://github.com/llvm/llvm-project/pull/172663
>From 326addd57e92ad32094d4c81b412e279ee2ad130 Mon Sep 17 00:00:00 2001 From: mencotton <[email protected]> Date: Wed, 17 Dec 2025 21:28:59 +0900 Subject: [PATCH 1/2] [CIR] Handle optional alignment in alloca lowering --- clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp | 7 +++++-- clang/test/CIR/Lowering/alloca.cir | 13 +++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 clang/test/CIR/Lowering/alloca.cir diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp index 7d854997848aa..82e556f6e65db 100644 --- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp +++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp @@ -1515,8 +1515,11 @@ mlir::LogicalResult CIRToLLVMAllocaOpLowering::matchAndRewrite( assert(!cir::MissingFeatures::addressSpace()); assert(!cir::MissingFeatures::opAllocaAnnotations()); - rewriter.replaceOpWithNewOp<mlir::LLVM::AllocaOp>( - op, resultTy, elementTy, size, op.getAlignmentAttr().getInt()); + unsigned alignment = 0; + if (auto alignAttr = op.getAlignmentAttr()) + alignment = alignAttr.getInt(); + rewriter.replaceOpWithNewOp<mlir::LLVM::AllocaOp>(op, resultTy, elementTy, + size, alignment); return mlir::success(); } diff --git a/clang/test/CIR/Lowering/alloca.cir b/clang/test/CIR/Lowering/alloca.cir new file mode 100644 index 0000000000000..51980d393eb6f --- /dev/null +++ b/clang/test/CIR/Lowering/alloca.cir @@ -0,0 +1,13 @@ +// RUN: cir-opt %s --cir-to-llvm | FileCheck %s + +!s32i = !cir.int<s, 32> + +module { + // CHECK-LABEL: llvm.func @alloca_no_align + // CHECK: %[[SIZE:.*]] = llvm.mlir.constant(1 : i64) : i64 + // CHECK-NEXT: %{{.*}} = llvm.alloca %[[SIZE]] x i32 : (i64) -> !llvm.ptr + cir.func @alloca_no_align() { + %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["var_name"] + cir.return + } +} >From 22db0a6f09ef69f2e0e2b99d8d931e51ed5dad1e Mon Sep 17 00:00:00 2001 From: Akimasa Watanuki <[email protected]> Date: Thu, 18 Dec 2025 00:09:28 +0900 Subject: [PATCH 2/2] fix: avoid use auto Co-authored-by: Sirui Mu <[email protected]> --- clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp index 82e556f6e65db..50fb63f523b81 100644 --- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp +++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp @@ -1516,7 +1516,7 @@ mlir::LogicalResult CIRToLLVMAllocaOpLowering::matchAndRewrite( assert(!cir::MissingFeatures::opAllocaAnnotations()); unsigned alignment = 0; - if (auto alignAttr = op.getAlignmentAttr()) + if (mlir::IntegerAttr alignAttr = op.getAlignmentAttr()) alignment = alignAttr.getInt(); rewriter.replaceOpWithNewOp<mlir::LLVM::AllocaOp>(op, resultTy, elementTy, size, alignment); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
