[llvm] [MachineOutliner] Don't outline ADRP pair to avoid incorrect ICF (PR #160232)
Pranav Kant via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 6 08:02:49 PST 2025
================
@@ -10179,11 +10179,33 @@ AArch64InstrInfo::getOutliningTypeImpl(const MachineModuleInfo &MMI,
return outliner::InstrType::Illegal;
}
- // Special cases for instructions that can always be outlined, but will fail
- // the later tests. e.g, ADRPs, which are PC-relative use LR, but can always
- // be outlined because they don't require a *specific* value to be in LR.
- if (MI.getOpcode() == AArch64::ADRP)
+ // An ADRP instruction referencing a GOT should not be outlined.
----------------
pranavk wrote:
I went ahead and implemented a solution that only prevents splitting of adrp pair but still allows outlining of the whole sequence. Marking this as resolved.
https://github.com/llvm/llvm-project/pull/160232
More information about the llvm-commits
mailing list