diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/MachineOutliner.cpp | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64InstrInfo.cpp | 4 |
2 files changed, 2 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/MachineOutliner.cpp b/llvm/lib/CodeGen/MachineOutliner.cpp index 58d546158a8..0ee04f7d900 100644 --- a/llvm/lib/CodeGen/MachineOutliner.cpp +++ b/llvm/lib/CodeGen/MachineOutliner.cpp @@ -1357,8 +1357,8 @@ bool MachineOutliner::runOnModule(Module &M) { // If it is, look at each MachineBasicBlock in the function. for (MachineBasicBlock &MBB : MF) { - // Is there anything in MBB? - if (MBB.empty()) + // Is there anything in MBB? And is it the target of an indirect branch? + if (MBB.empty() || MBB.hasAddressTaken()) continue; // If yes, map it. diff --git a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp index 8be6b24a92e..62414ea6f8b 100644 --- a/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp +++ b/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp @@ -4779,10 +4779,6 @@ bool AArch64InstrInfo::isFunctionSafeToOutlineFrom( if (!F.hasFnAttribute(Attribute::NoRedZone)) return false; - // If anyone is using the address of this function, don't outline from it. - if (F.hasAddressTaken()) - return false; - // Can F be deduplicated by the linker? If it can, don't outline from it. if (!OutlineFromLinkOnceODRs && F.hasLinkOnceODRLinkage()) return false; |

