[all-commits] [llvm/llvm-project] 18308e: AArch64 GIsel: legalize lshr operands, even if it ...

Jameson Nash via All-commits all-commits at lists.llvm.org
Tue Nov 30 12:30:07 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 18308e171b5b1dd99627a4d88c7d6c5ff21b8c96
      https://github.com/llvm/llvm-project/commit/18308e171b5b1dd99627a4d88c7d6c5ff21b8c96
  Author: Jameson Nash <vtjnash at gmail.com>
  Date:   2021-11-30 (Tue, 30 Nov 2021)

  Changed paths:
    M llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
    M llvm/test/CodeGen/AArch64/GlobalISel/select-binop.mir
    M llvm/test/CodeGen/AArch64/GlobalISel/select-scalar-shift-imm.mir

  Log Message:
  -----------
  AArch64 GIsel: legalize lshr operands, even if it is poison

Previously, this caused GlobalISel to emit invalid IR (a gpr32 to gpr64
copy) and fail during verification.

While this shift is not defined (returns poison), it should not crash
codegen, as it may appear inside dead code (for example, a select
instruction), and it is legal IR input, as long as the value is unused.

Discovered while trying to build Julia with LLVM v13:
https://github.com/JuliaLang/julia/pull/42602.

Reviewed By: aemerson

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




More information about the All-commits mailing list