summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/MachineOutliner.cpp4
-rw-r--r--llvm/lib/Target/AArch64/AArch64InstrInfo.cpp4
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;
OpenPOWER on IntegriCloud