[llvm] [BOLT] Move ADRRelaxationPass (PR #101371)
Vladislav Khmelevsky via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 31 10:34:26 PDT 2024
https://github.com/yota9 created https://github.com/llvm/llvm-project/pull/101371
For non-simple functions we need nop instruction to be presented to
transform ADR to ADRP+ADD sequence, so run this pass before remove nops
pass.
>From 5b30e0b35703f359f71b5124e6ac46a8791a00d3 Mon Sep 17 00:00:00 2001
From: Vladislav Khmelevsky <och95 at yandex.ru>
Date: Wed, 31 Jul 2024 21:30:26 +0400
Subject: [PATCH] [BOLT] Move ADRRelaxationPass
For non-simple functions we need nop instruction to be presented to
transform ADR to ADRP+ADD sequence, so run this pass before remove nops
pass.
---
bolt/lib/Rewrite/BinaryPassManager.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/bolt/lib/Rewrite/BinaryPassManager.cpp b/bolt/lib/Rewrite/BinaryPassManager.cpp
index 5dfef0b71cc79..dadb1f4d833b0 100644
--- a/bolt/lib/Rewrite/BinaryPassManager.cpp
+++ b/bolt/lib/Rewrite/BinaryPassManager.cpp
@@ -357,6 +357,8 @@ Error BinaryFunctionPassManager::runAllPasses(BinaryContext &BC) {
Manager.registerPass(
std::make_unique<VeneerElimination>(PrintVeneerElimination));
+
+ Manager.registerPass(std::make_unique<ADRRelaxationPass>());
}
if (BC.isRISCV()) {
@@ -490,8 +492,6 @@ Error BinaryFunctionPassManager::runAllPasses(BinaryContext &BC) {
Manager.registerPass(std::make_unique<ReorderData>());
if (BC.isAArch64()) {
- Manager.registerPass(std::make_unique<ADRRelaxationPass>());
-
// Tighten branches according to offset differences between branch and
// targets. No extra instructions after this pass, otherwise we may have
// relocations out of range and crash during linking.
More information about the llvm-commits
mailing list