diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -3164,7 +3164,7 @@ 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 --- /dev/null +++ b/llvm/test/CodeGen/X86/big-array-init.ll @@ -0,0 +1,7 @@ +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | 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