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 @@ -3369,7 +3369,8 @@ ExtraBitsSize = alignTo(ExtraBitsSize, 8); ExtraBits = Realigned.getRawData()[0] & (((uint64_t)-1) >> (64 - ExtraBitsSize)); - Realigned.lshrInPlace(ExtraBitsSize); + if (BitWidth >= 64) + Realigned.lshrInPlace(ExtraBitsSize); } else ExtraBits = Realigned.getRawData()[BitWidth / 64]; } diff --git a/llvm/test/CodeGen/AArch64/aarch64_be-global-const.ll b/llvm/test/CodeGen/AArch64/aarch64_be-global-const.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/aarch64_be-global-const.ll @@ -0,0 +1,6 @@ +; RUN: llc -mtriple=aarch64_be < %s | FileCheck %s + +; CHECK-LABEL: G: +; CHECK: .byte 11 +; CHECK: .size G, 1 +@G = global <4 x i1>