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/4] [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/4] 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);

>From 916a4458e8d1fccf03c6ef240bceea25a81b304d Mon Sep 17 00:00:00 2001
From: mencotton <[email protected]>
Date: Fri, 19 Dec 2025 13:00:17 +0900
Subject: [PATCH 3/4] fix: make cir.alloca alignment mandatory with default
 value 0

---
 clang/include/clang/CIR/Dialect/IR/CIROps.td        | 2 +-
 clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp | 5 +----
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td 
b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 0e91d008dc52d..3a5f72afa672a 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -530,7 +530,7 @@ def CIR_AllocaOp : CIR_Op<"alloca", [
     StrAttr:$name,
     UnitAttr:$init,
     UnitAttr:$constant,
-    ConfinedAttr<OptionalAttr<I64Attr>, [IntMinValue<0>]>:$alignment,
+    ConfinedAttr<DefaultValuedAttr<I64Attr, "0">, [IntMinValue<0>]>:$alignment,
     OptionalAttr<ArrayAttr>:$annotations
   );
 
diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp 
b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
index 50fb63f523b81..d2692dea6e728 100644
--- a/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+++ b/clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
@@ -1515,11 +1515,8 @@ mlir::LogicalResult 
CIRToLLVMAllocaOpLowering::matchAndRewrite(
   assert(!cir::MissingFeatures::addressSpace());
   assert(!cir::MissingFeatures::opAllocaAnnotations());
 
-  unsigned alignment = 0;
-  if (mlir::IntegerAttr alignAttr = op.getAlignmentAttr())
-    alignment = alignAttr.getInt();
   rewriter.replaceOpWithNewOp<mlir::LLVM::AllocaOp>(op, resultTy, elementTy,
-                                                    size, alignment);
+                                                    size, op.getAlignment());
 
   return mlir::success();
 }

>From 3ce416dced123d1fef5c256b0d7c182026147836 Mon Sep 17 00:00:00 2001
From: mencotton <[email protected]>
Date: Sun, 11 Jan 2026 00:55:08 +0900
Subject: [PATCH 4/4] fix: remove default value

---
 clang/include/clang/CIR/Dialect/IR/CIROps.td  |  2 +-
 clang/test/CIR/IR/invalid-complex.cir         |  6 ++--
 clang/test/CIR/IR/invalid-throw.cir           |  2 +-
 clang/test/CIR/IR/invalid-try-catch.cir       |  2 +-
 clang/test/CIR/IR/invalid-vector.cir          |  2 +-
 clang/test/CIR/IR/resume-flat.cir             |  4 +--
 clang/test/CIR/IR/struct.cir                  |  4 +--
 clang/test/CIR/IR/throw.cir                   |  6 ++--
 clang/test/CIR/IR/vector.cir                  | 34 +++++++++----------
 clang/test/CIR/Lowering/alloca.cir            |  2 +-
 .../CIR/Transforms/complex-create-fold.cir    |  4 +--
 .../test/CIR/Transforms/complex-imag-fold.cir |  2 +-
 .../test/CIR/Transforms/complex-real-fold.cir |  2 +-
 clang/test/CIR/Transforms/ternary-fold.cir    |  2 +-
 .../CIR/Transforms/vector-extract-fold.cir    |  4 +--
 15 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/clang/include/clang/CIR/Dialect/IR/CIROps.td 
b/clang/include/clang/CIR/Dialect/IR/CIROps.td
index 02d3491b611c8..dc512a446cef0 100644
--- a/clang/include/clang/CIR/Dialect/IR/CIROps.td
+++ b/clang/include/clang/CIR/Dialect/IR/CIROps.td
@@ -533,7 +533,7 @@ def CIR_AllocaOp : CIR_Op<"alloca", [
     StrAttr:$name,
     UnitAttr:$init,
     UnitAttr:$constant,
-    ConfinedAttr<DefaultValuedAttr<I64Attr, "0">, [IntMinValue<0>]>:$alignment,
+    ConfinedAttr<I64Attr, [IntMinValue<0>]>:$alignment,
     OptionalAttr<ArrayAttr>:$annotations
   );
 
diff --git a/clang/test/CIR/IR/invalid-complex.cir 
b/clang/test/CIR/IR/invalid-complex.cir
index 3a11b631a2ac7..3cf6363fe2a47 100644
--- a/clang/test/CIR/IR/invalid-complex.cir
+++ b/clang/test/CIR/IR/invalid-complex.cir
@@ -26,7 +26,7 @@ cir.global external @ci2 = #cir.const_complex<#cir.int<1> : 
!s32i, #cir.int<2> :
 
 module {
   cir.func @complex_real_invalid_result_type() -> !cir.double {
-    %0 = cir.alloca !cir.complex<!cir.double>, 
!cir.ptr<!cir.complex<!cir.double>>, ["c"]
+    %0 = cir.alloca !cir.complex<!cir.double>, 
!cir.ptr<!cir.complex<!cir.double>>, ["c"] {alignment = 0 : i64}
     %2 = cir.load align(8) %0 : !cir.ptr<!cir.complex<!cir.double>>, 
!cir.complex<!cir.double>
     // expected-error @below {{result type does not match operand type}}
     %3 = cir.complex.real %2 : !cir.complex<!cir.double> -> !cir.float
@@ -38,7 +38,7 @@ module {
 
 module {
   cir.func @complex_imag_invalid_result_type() -> !cir.double {
-    %0 = cir.alloca !cir.complex<!cir.double>, 
!cir.ptr<!cir.complex<!cir.double>>, ["c"]
+    %0 = cir.alloca !cir.complex<!cir.double>, 
!cir.ptr<!cir.complex<!cir.double>>, ["c"] {alignment = 0 : i64}
     %2 = cir.load align(8) %0 : !cir.ptr<!cir.complex<!cir.double>>, 
!cir.complex<!cir.double>
     // expected-error @below {{result type does not match operand type}}
     %3 = cir.complex.imag %2 : !cir.complex<!cir.double> -> !cir.float
@@ -51,7 +51,7 @@ module {
 
 module {
   cir.func @complex_real_ptr_invalid_result_type() -> !cir.double {
-    %0 = cir.alloca !cir.complex<!cir.double>, 
!cir.ptr<!cir.complex<!cir.double>>, ["c"]
+    %0 = cir.alloca !cir.complex<!cir.double>, 
!cir.ptr<!cir.complex<!cir.double>>, ["c"] {alignment = 0 : i64}
     // expected-error @below {{result type does not match operand type}}
     %1 = cir.complex.real_ptr %0 : !cir.ptr<!cir.complex<!cir.double>> -> 
!cir.ptr<!cir.float>
     cir.return
diff --git a/clang/test/CIR/IR/invalid-throw.cir 
b/clang/test/CIR/IR/invalid-throw.cir
index 53582a11b285e..4c3c4ce0f9cb9 100644
--- a/clang/test/CIR/IR/invalid-throw.cir
+++ b/clang/test/CIR/IR/invalid-throw.cir
@@ -5,7 +5,7 @@
 module {
 
 cir.func dso_local @throw_without_type_info() {
-    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["a"]
+    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["a"] {alignment = 0 : i64}
     // expected-error @below {{'cir.throw' op 'type_info' symbol attribute 
missing}}
     cir.throw %0 : !cir.ptr<!s32i>
     cir.unreachable
diff --git a/clang/test/CIR/IR/invalid-try-catch.cir 
b/clang/test/CIR/IR/invalid-try-catch.cir
index 94df4b63ed629..69691edf48437 100644
--- a/clang/test/CIR/IR/invalid-try-catch.cir
+++ b/clang/test/CIR/IR/invalid-try-catch.cir
@@ -59,7 +59,7 @@ cir.func dso_local @invalid_catch_empty_block() {
 module {
 
 cir.func dso_local @invalid_catch_not_terminated() {
-  %a = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init]
+  %a = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] {alignment = 0 : i64}
   cir.scope {
     cir.try {
       cir.yield
diff --git a/clang/test/CIR/IR/invalid-vector.cir 
b/clang/test/CIR/IR/invalid-vector.cir
index 7e6485207b196..7aa32832c5694 100644
--- a/clang/test/CIR/IR/invalid-vector.cir
+++ b/clang/test/CIR/IR/invalid-vector.cir
@@ -14,7 +14,7 @@ cir.global external @vec_b = #cir.zero : !cir.vector<4 x 
!cir.array<!s32i x 10>>
 cir.func @invalid_scalable_vec_syntax() {
   // expected-error@+2 {{missing closing `]` for scalable dim size}}
   // expected-error @below {{expected ']'}}
-  %3 = cir.alloca !cir.vector<[1 x] !s32i>, !cir.ptr<!cir.vector<[1] x !s32i>>
+  %3 = cir.alloca !cir.vector<[1 x] !s32i>, !cir.ptr<!cir.vector<[1] x !s32i>> 
{alignment = 0 : i64}
   cir.return
 
 }
diff --git a/clang/test/CIR/IR/resume-flat.cir 
b/clang/test/CIR/IR/resume-flat.cir
index 9c047dbf995a4..5d40a195251bd 100644
--- a/clang/test/CIR/IR/resume-flat.cir
+++ b/clang/test/CIR/IR/resume-flat.cir
@@ -6,8 +6,8 @@
 module {
 
 cir.func private @flattened_resume() {
-  %exception_addr = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, 
["exception", init]
-  %type_id_addr = cir.alloca !u32i, !cir.ptr<!u32i>, ["type_id", init]
+  %exception_addr = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, 
["exception", init] {alignment = 0 : i64}
+  %type_id_addr = cir.alloca !u32i, !cir.ptr<!u32i>, ["type_id", init] 
{alignment = 0 : i64}
   %exception = cir.load %exception_addr : !cir.ptr<!cir.ptr<!void>>, 
!cir.ptr<!void>
   %type_id = cir.load %type_id_addr : !cir.ptr<!u32i>, !u32i
   cir.resume.flat %exception, %type_id
diff --git a/clang/test/CIR/IR/struct.cir b/clang/test/CIR/IR/struct.cir
index e1c612ea11239..1467bcd41de4b 100644
--- a/clang/test/CIR/IR/struct.cir
+++ b/clang/test/CIR/IR/struct.cir
@@ -68,8 +68,8 @@ module  {
   }
 
   cir.func @structs() {
-    %0 = cir.alloca !cir.ptr<!cir.record<struct "Sc" {!u8i, !u16i, !u32i}>>, 
!cir.ptr<!cir.ptr<!cir.record<struct "Sc" {!u8i, !u16i, !u32i}>>>, ["sc", init]
-    %1 = cir.alloca !cir.ptr<!cir.record<union "U" incomplete>>, 
!cir.ptr<!cir.ptr<!cir.record<union "U" incomplete>>>, ["u", init]
+    %0 = cir.alloca !cir.ptr<!cir.record<struct "Sc" {!u8i, !u16i, !u32i}>>, 
!cir.ptr<!cir.ptr<!cir.record<struct "Sc" {!u8i, !u16i, !u32i}>>>, ["sc", init] 
{alignment = 0 : i64}
+    %1 = cir.alloca !cir.ptr<!cir.record<union "U" incomplete>>, 
!cir.ptr<!cir.ptr<!cir.record<union "U" incomplete>>>, ["u", init] {alignment = 
0 : i64}
     cir.return
   }
 
diff --git a/clang/test/CIR/IR/throw.cir b/clang/test/CIR/IR/throw.cir
index e7a1bf4f2f283..c73b6a81e6abb 100644
--- a/clang/test/CIR/IR/throw.cir
+++ b/clang/test/CIR/IR/throw.cir
@@ -15,9 +15,9 @@ cir.func @throw_with_no_return() {
 // CHECK: }
 
 cir.func @throw_with_no_return_2(%arg0: !s32i, %arg1: !s32i) -> !s32i {
-  %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init]
-  %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["b", init]
-  %2 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"]
+  %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] {alignment = 0 : i64}
+  %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["b", init] {alignment = 0 : i64}
+  %2 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 0 : i64}
   cir.store %arg0, %0 : !s32i, !cir.ptr<!s32i>
   cir.store %arg1, %1 : !s32i, !cir.ptr<!s32i>
   cir.scope {
diff --git a/clang/test/CIR/IR/vector.cir b/clang/test/CIR/IR/vector.cir
index ac5d0453b1b7e..67f5b21c40e2c 100644
--- a/clang/test/CIR/IR/vector.cir
+++ b/clang/test/CIR/IR/vector.cir
@@ -20,10 +20,10 @@ cir.global external @vec_d = #cir.const_vector<[#cir.int<1> 
: !s32i, #cir.int<2>
 // CIR-SAME: !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.vector<4 
x !s32i>
 
 cir.func @vec_int_test() {
-  %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a"]
-  %1 = cir.alloca !cir.vector<3 x !s32i>, !cir.ptr<!cir.vector<3 x !s32i>>, 
["b"]
-  %2 = cir.alloca !cir.vector<2 x !s32i>, !cir.ptr<!cir.vector<2 x !s32i>>, 
["c"]
-  %3 = cir.alloca !cir.vector<[1] x !s32i>, !cir.ptr<!cir.vector<[1] x 
!s32i>>, ["d"]
+  %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a"] {alignment = 0 : i64}
+  %1 = cir.alloca !cir.vector<3 x !s32i>, !cir.ptr<!cir.vector<3 x !s32i>>, 
["b"] {alignment = 0 : i64}
+  %2 = cir.alloca !cir.vector<2 x !s32i>, !cir.ptr<!cir.vector<2 x !s32i>>, 
["c"] {alignment = 0 : i64}
+  %3 = cir.alloca !cir.vector<[1] x !s32i>, !cir.ptr<!cir.vector<[1] x 
!s32i>>, ["d"] {alignment = 0 : i64}
   cir.return
 }
 
@@ -36,7 +36,7 @@ cir.func @vec_int_test() {
 // CHECK: }
 
 cir.func @vec_double_test() {
-  %0 = cir.alloca !cir.vector<2 x !cir.double>, !cir.ptr<!cir.vector<2 x 
!cir.double>>, ["a"]
+  %0 = cir.alloca !cir.vector<2 x !cir.double>, !cir.ptr<!cir.vector<2 x 
!cir.double>>, ["a"] {alignment = 0 : i64}
   cir.return
 }
 
@@ -46,7 +46,7 @@ cir.func @vec_double_test() {
 // CHECK: }
 
 cir.func @local_vector_create_test() {
-    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a", init]
+    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a", init] {alignment = 0 : i64}
     %1 = cir.const #cir.int<1> : !s32i
     %2 = cir.const #cir.int<2> : !s32i
     %3 = cir.const #cir.int<3> : !s32i
@@ -68,8 +68,8 @@ cir.func @local_vector_create_test() {
 // CHECK: }
 
 cir.func @vector_extract_element_test() {
-    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["d", init]
-    %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["e", init]
+    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["d", init] {alignment = 0 : i64}
+    %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["e", init] {alignment = 0 : i64}
     %2 = cir.const #cir.int<1> : !s32i
     %3 = cir.const #cir.int<2> : !s32i
     %4 = cir.const #cir.int<3> : !s32i
@@ -100,7 +100,7 @@ cir.func @vector_extract_element_test() {
 // CHECK: }
 
 cir.func @vector_insert_element_test() {
-    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a", init]
+    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a", init] {alignment = 0 : i64}
     %1 = cir.const #cir.int<1> : !s32i
     %2 = cir.const #cir.int<2> : !s32i
     %3 = cir.const #cir.int<3> : !s32i
@@ -138,9 +138,9 @@ cir.func @vector_insert_element_test() {
 // CHECK:  }
 
 cir.func @vector_compare_test() {
-    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a"]
-    %1 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["b"]
-    %2 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["o", init]
+    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a"] {alignment = 0 : i64}
+    %1 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["b"] {alignment = 0 : i64}
+    %2 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["o", init] {alignment = 0 : i64}
     %3 = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<2> : 
!s32i, #cir.int<4> : !s32i, #cir.int<4> : !s32i]> : !cir.vector<4 x !s32i>
     cir.store %3, %0 : !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>
     %4 = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<2> : 
!s32i, #cir.int<4> : !s32i, #cir.int<4> : !s32i]> : !cir.vector<4 x !s32i>
@@ -168,9 +168,9 @@ cir.func @vector_compare_test() {
 // CHECK: }
 
 cir.func @vector_shuffle_dynamic_test() {
-    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a"]
-    %1 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["b"]
-    %2 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["r", init]
+    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a"] {alignment = 0 : i64}
+    %1 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["b"] {alignment = 0 : i64}
+    %2 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["r", init] {alignment = 0 : i64}
     %3 = cir.load align(16) %0 : !cir.ptr<!cir.vector<4 x !s32i>>, 
!cir.vector<4 x !s32i>
     %4 = cir.load align(16) %1 : !cir.ptr<!cir.vector<4 x !s32i>>, 
!cir.vector<4 x !s32i>
     %5 = cir.vec.shuffle.dynamic %3 : !cir.vector<4 x !s32i>, %4 : 
!cir.vector<4 x !s32i>
@@ -190,8 +190,8 @@ cir.func @vector_shuffle_dynamic_test() {
 // CHECK: }
 
 cir.func @vector_splat_test() {
-    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a", init]
-    %1 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["shl", init]
+    %0 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["a", init] {alignment = 0 : i64}
+    %1 = cir.alloca !cir.vector<4 x !s32i>, !cir.ptr<!cir.vector<4 x !s32i>>, 
["shl", init] {alignment = 0 : i64}
     %2 = cir.const #cir.int<1> : !s32i
     %3 = cir.const #cir.int<2> : !s32i
     %4 = cir.const #cir.int<3> : !s32i
diff --git a/clang/test/CIR/Lowering/alloca.cir 
b/clang/test/CIR/Lowering/alloca.cir
index 51980d393eb6f..92310dfd7562b 100644
--- a/clang/test/CIR/Lowering/alloca.cir
+++ b/clang/test/CIR/Lowering/alloca.cir
@@ -7,7 +7,7 @@ module {
   // 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"]
+    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["var_name"] {alignment = 0 : i64}
     cir.return
   }
 }
diff --git a/clang/test/CIR/Transforms/complex-create-fold.cir 
b/clang/test/CIR/Transforms/complex-create-fold.cir
index 370acaecc2222..3ae7fb3f341f1 100644
--- a/clang/test/CIR/Transforms/complex-create-fold.cir
+++ b/clang/test/CIR/Transforms/complex-create-fold.cir
@@ -4,8 +4,8 @@
 
 module {
   cir.func @fold_complex_create_test() -> !cir.complex<!s32i>  {
-    %0 = cir.alloca !cir.complex<!s32i>, !cir.ptr<!cir.complex<!s32i>>, 
["__retval"]
-    %1 = cir.alloca !cir.complex<!s32i>, !cir.ptr<!cir.complex<!s32i>>, ["c", 
init]
+    %0 = cir.alloca !cir.complex<!s32i>, !cir.ptr<!cir.complex<!s32i>>, 
["__retval"] {alignment = 0 : i64}
+    %1 = cir.alloca !cir.complex<!s32i>, !cir.ptr<!cir.complex<!s32i>>, ["c", 
init] {alignment = 0 : i64}
     %2 = cir.const #cir.int<1> : !s32i
     %3 = cir.const #cir.int<2> : !s32i
     %4 = cir.complex.create %2, %3 : !s32i -> !cir.complex<!s32i>
diff --git a/clang/test/CIR/Transforms/complex-imag-fold.cir 
b/clang/test/CIR/Transforms/complex-imag-fold.cir
index 56e062d5285a2..c93ba1566aedb 100644
--- a/clang/test/CIR/Transforms/complex-imag-fold.cir
+++ b/clang/test/CIR/Transforms/complex-imag-fold.cir
@@ -4,7 +4,7 @@
 
 module {
   cir.func @fold_complex_imag_test() -> !s32i {
-    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"]
+    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 0 : i64}
     %2 = cir.const #cir.const_complex<#cir.int<1> : !s32i, #cir.int<2> : 
!s32i> : !cir.complex<!s32i>
     %4 = cir.complex.imag %2 : !cir.complex<!s32i> -> !s32i
     cir.store %4, %0 : !s32i, !cir.ptr<!s32i>
diff --git a/clang/test/CIR/Transforms/complex-real-fold.cir 
b/clang/test/CIR/Transforms/complex-real-fold.cir
index 29b03276f822d..9fc3f3f39f9db 100644
--- a/clang/test/CIR/Transforms/complex-real-fold.cir
+++ b/clang/test/CIR/Transforms/complex-real-fold.cir
@@ -4,7 +4,7 @@
 
 module {
   cir.func @fold_complex_real_test() -> !s32i {
-    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"]
+    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["__retval"] {alignment = 0 : i64}
     %2 = cir.const #cir.const_complex<#cir.int<1> : !s32i, #cir.int<2> : 
!s32i> : !cir.complex<!s32i>
     %4 = cir.complex.real %2 : !cir.complex<!s32i> -> !s32i
     cir.store %4, %0 : !s32i, !cir.ptr<!s32i>
diff --git a/clang/test/CIR/Transforms/ternary-fold.cir 
b/clang/test/CIR/Transforms/ternary-fold.cir
index 718906f5c6ee5..acbafdec24d35 100644
--- a/clang/test/CIR/Transforms/ternary-fold.cir
+++ b/clang/test/CIR/Transforms/ternary-fold.cir
@@ -51,7 +51,7 @@ module {
   // CHECK-NEXT: }
 
   cir.func @non_simplifiable_ternary(%arg0 : !cir.bool) -> !s32i {
-    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init]
+    %0 = cir.alloca !s32i, !cir.ptr<!s32i>, ["a", init] {alignment = 0 : i64}
     %1 = cir.ternary (%arg0, true {
       %2 = cir.const #cir.int<42> : !s32i
       cir.yield %2 : !s32i
diff --git a/clang/test/CIR/Transforms/vector-extract-fold.cir 
b/clang/test/CIR/Transforms/vector-extract-fold.cir
index 14fed50454b87..632ced6e261fb 100644
--- a/clang/test/CIR/Transforms/vector-extract-fold.cir
+++ b/clang/test/CIR/Transforms/vector-extract-fold.cir
@@ -4,7 +4,7 @@
 
 module {
   cir.func @fold_extract_vector_op_test() {
-    %init = cir.alloca !s32i, !cir.ptr<!s32i>, ["e", init]
+    %init = cir.alloca !s32i, !cir.ptr<!s32i>, ["e", init] {alignment = 0 : 
i64}
     %const_vec = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<2> 
: !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.vector<4 x !s32i>
     %index = cir.const #cir.int<1> : !s32i
     %ele = cir.vec.extract %const_vec[%index : !s32i] : !cir.vector<4 x !s32i>
@@ -17,7 +17,7 @@ module {
   // CHECK: cir.store %[[VALUE]], %[[INIT]] : !s32i, !cir.ptr<!s32i>
 
   cir.func @fold_extract_vector_op_index_out_of_bounds_test() {
-    %init = cir.alloca !s32i, !cir.ptr<!s32i>, ["e", init]
+    %init = cir.alloca !s32i, !cir.ptr<!s32i>, ["e", init] {alignment = 0 : 
i64}
     %const_vec = cir.const #cir.const_vector<[#cir.int<1> : !s32i, #cir.int<2> 
: !s32i, #cir.int<3> : !s32i, #cir.int<4> : !s32i]> : !cir.vector<4 x !s32i>
     %index = cir.const #cir.int<9> : !s32i
     %ele = cir.vec.extract %const_vec[%index : !s32i] : !cir.vector<4 x !s32i>

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to