[PATCH] D23413: CodeGen: Allow critical edge splitting with structurized CFGs

Tom Stellard via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 11 10:55:42 PDT 2016


tstellarAMD created this revision.
tstellarAMD added a reviewer: arsenm.
tstellarAMD added a subscriber: llvm-commits.

The rationale for not splitting critical edges with structurized CFGs was
that it would hurt performance.  This isn't true in all cases, for example,
splitting cirtical edges to hoist code out of loops.

These sort of performance decisions should really be made by the optimization
passes.

https://reviews.llvm.org/D23413

Files:
  lib/CodeGen/MachineBasicBlock.cpp

Index: lib/CodeGen/MachineBasicBlock.cpp
===================================================================
--- lib/CodeGen/MachineBasicBlock.cpp
+++ lib/CodeGen/MachineBasicBlock.cpp
@@ -962,11 +962,6 @@
 
   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())
-    return false;
-
   // We may need to update this's terminator, but we can't do that if
   // AnalyzeBranch fails. If this uses a jump table, we won't touch it.
   const TargetInstrInfo *TII = MF->getSubtarget().getInstrInfo();


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23413.67710.patch
Type: text/x-patch
Size: 676 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160811/ce0b4ec2/attachment.bin>


More information about the llvm-commits mailing list