diff options
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index ffa68aa..c2f459e 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -1113,8 +1113,12 @@ bool MachineBasicBlock::canSplitCriticalEdge( if (Succ->isEHPad()) return false; - const MachineFunction *MF = getParent(); + // Splitting the critical edge to a callbr's indirect block isn't advised. + // Don't do it in this generic function. + if (isInlineAsmBrIndirectTarget(Succ)) + return false; + const MachineFunction *MF = getParent(); // Performance might be harmed on HW that implements branching using exec mask // where both sides of the branches are always executed. if (MF->getTarget().requiresStructuredCFG()) |