From 997eae3673dcd635b60ac63031f01f5dded92f32 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Thu, 16 May 2024 14:41:19 -0700 Subject: [PATCH] [AsmPrinter] Increase upper bound for size in global structs This is part of the fixes to address #57353 https://reviews.llvm.org/D133845 Pull Request: https://github.com/llvm/llvm-project/pull/92334 --- llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 2 +- llvm/test/CodeGen/X86/big-array-init.ll | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 llvm/test/CodeGen/X86/big-array-init.ll diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 869670d43a1785..d50cdc4323ecfa 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -3501,7 +3501,7 @@ static void emitGlobalConstantStruct(const DataLayout &DL, const Constant *BaseCV, uint64_t Offset, AsmPrinter::AliasMapTy *AliasList) { // Print the fields in successive locations. Pad to align if needed! - unsigned Size = DL.getTypeAllocSize(CS->getType()); + uint64_t Size = DL.getTypeAllocSize(CS->getType()); const StructLayout *Layout = DL.getStructLayout(CS->getType()); uint64_t SizeSoFar = 0; for (unsigned I = 0, E = CS->getNumOperands(); I != E; ++I) { diff --git a/llvm/test/CodeGen/X86/big-array-init.ll b/llvm/test/CodeGen/X86/big-array-init.ll new file mode 100644 index 00000000000000..6b05f901ebea84 --- /dev/null +++ b/llvm/test/CodeGen/X86/big-array-init.ll @@ -0,0 +1,7 @@ +; RUN: llc < %s -mtriple=x86_64 | FileCheck %s + +; CHECK-LABEL: bad_int: +; CHECK-NEXT: .long 1 +; CHECK-NEXT: .zero 4294967292 +; CHECK-NEXT: .size bad_int, 4294967296 +@bad_int = global <{ i32, [1073741823 x i32] }> <{ i32 1, [1073741823 x i32] zeroinitializer }>, align 16