[all-commits] [llvm/llvm-project] fc1ffb: [AsmPrinter] Fix Crash when Emitting Global Consta...

Henry Yu via All-commits all-commits at lists.llvm.org
Wed Mar 29 00:09:26 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: fc1ffb4c0ea886bf37a2169db3d9270eb600d9fc
  Author: Henry Yu <hazyfish at outlook.com>
  Date:   2023-03-29 (Wed, 29 Mar 2023)

  Changed paths:
    M llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
    A llvm/test/CodeGen/AArch64/aarch64_be-global-const.ll

  Log Message:
  [AsmPrinter] Fix Crash when Emitting Global Constant of small bit width when targeting Big Endian arch

For Big Endian, the function `emitGlobalConstantLargeInt` tries to right shift `Realigned` by an amount `ExtraBitSize` in place. However, if the constant to emit has a bit width less than 64 and the bit width is not a multiple of 8, the shift amount will be greater than the bit width of `Realigned`, which causes assertion error described in issue [[ https://github.com/llvm/llvm-project/issues/59055 | issue #59055 ]].

This patch fixes the issue by avoiding right shift when bit width is under 64 to avoid the assertion error.

Reviewed By: Peter

Differential Revision: https://reviews.llvm.org/D138246

More information about the All-commits mailing list