[all-commits] [llvm/llvm-project] 095a0c: [CodeGen] precommit machine-latecleanup test
Nick Desaulniers via All-commits
all-commits at lists.llvm.org
Thu Apr 27 13:46:20 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 095a0c67bb5705b2ebd91ecc039e73bbd6982cee
https://github.com/llvm/llvm-project/commit/095a0c67bb5705b2ebd91ecc039e73bbd6982cee
Author: Nick Desaulniers <ndesaulniers at google.com>
Date: 2023-04-27 (Thu, 27 Apr 2023)
Changed paths:
A llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir
Log Message:
-----------
[CodeGen] precommit machine-latecleanup test
Demonstrates a hazard in machine-latecleanup.
Differential Revision: https://reviews.llvm.org/D149190
Commit: 012ea747ed0275c499f69c82ac0f635f4c76f746
https://github.com/llvm/llvm-project/commit/012ea747ed0275c499f69c82ac0f635f4c76f746
Author: Nick Desaulniers <ndesaulniers at google.com>
Date: 2023-04-27 (Thu, 27 Apr 2023)
Changed paths:
M llvm/lib/CodeGen/MachineLateInstrsCleanup.cpp
M llvm/test/CodeGen/AArch64/machine-latecleanup-inlineasm.mir
Log Message:
-----------
[CodeGen][MachineLastInstrsCleanup] fix INLINEASM_BR hazard
If the removable definition resides in an INLINEASM_BR target, the
reuseable candidate might not dominate the INLINEASM_BR.
bb0:
INLINEASM_BR &"" %bb.1
renamable $x8 = MOVi64imm 29273397577910035
B %bb.2
...
bb1:
renamable $x8 = MOVi64imm 29273397577910035
renamable $x8 = ADDXri killed renamable $x8, 2048, 0
bb2:
Removing the second mov is a hazard when the inline asm branches to bb1.
Skip such replacements when the to be removed instruction is in the
target of such an INLINEASM_BR instruction.
We could get more aggressive about this in the future, but for now
simply abort.
This is causing a boot failure on linux-4.19.y branches of the LTS Linux
kernel for ARCH=arm64 with CONFIG_RANDOMIZE_BASE=y (KASLR) and
CONFIG_UNMAP_KERNEL_AT_EL0=y (KPTI).
Link: https://reviews.llvm.org/D123394
Link: https://github.com/ClangBuiltLinux/linux/issues/1837
Thanks to @nathanchance for the report, and @ardb for debugging.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D149191
Compare: https://github.com/llvm/llvm-project/compare/d1c2034cce0d...012ea747ed02
More information about the All-commits
mailing list