From 3e76d6cb79e57e7d239488add355c5a27cc3ae44 Mon Sep 17 00:00:00 2001 From: bruteforceboy Date: Fri, 13 Sep 2024 13:21:37 +0300 Subject: [PATCH] [CIR][Lowering] Fix static array lowering --- clang/lib/CIR/Lowering/LoweringHelpers.cpp | 2 +- clang/test/CIR/Lowering/static-array.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 clang/test/CIR/Lowering/static-array.c diff --git a/clang/lib/CIR/Lowering/LoweringHelpers.cpp b/clang/lib/CIR/Lowering/LoweringHelpers.cpp index 26b2af82ca19..debe7881d0c4 100644 --- a/clang/lib/CIR/Lowering/LoweringHelpers.cpp +++ b/clang/lib/CIR/Lowering/LoweringHelpers.cpp @@ -91,7 +91,7 @@ void convertToDenseElementsAttrImpl(mlir::cir::ConstArrayAttr attr, auto nestTy = localArrayTy.getEltType(); if (!mlir::isa(nestTy)) - values.insert(values.end(), localArrayTy.getSize() - numTrailingZeros, + values.insert(values.end(), numTrailingZeros, getZeroInitFromType(nestTy)); } } diff --git a/clang/test/CIR/Lowering/static-array.c b/clang/test/CIR/Lowering/static-array.c new file mode 100644 index 000000000000..60cfce0245d6 --- /dev/null +++ b/clang/test/CIR/Lowering/static-array.c @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o %t.ll +// RUN: FileCheck --input-file=%t.ll %s -check-prefix=LLVM + +int test(int x) { + static int arr[10] = {0, 1, 0, 0}; + return arr[x]; +} +// LLVM: internal global [10 x i32] [i32 0, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0] \ No newline at end of file