llvm-6502/test/Transforms/SimplifyCFG
Philip Reames 6bde9f6994 Merge empty landing pads in SimplifyCFG
This patch tries to merge duplicate landing pads when they branch to a common shared target.

Given IR that looks like this:
lpad1:
  %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
         cleanup
  br label %shared_resume
lpad2:
  %exn2 = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
          cleanup
  br label %shared_resume
shared_resume:
  call void @fn()
  ret void
}

We can rewrite the users of both landing pad blocks to use one of them. This will generally allow the shared_resume block to be merged with the common landing pad as well.

Without this change, tail duplication would likely kick in - creating N (2 in this case) copies of the shared_resume basic block.

Differential Revision: http://reviews.llvm.org/D8297



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233125 91177308-0d34-0410-b5e6-96231b3b80d8
2015-03-24 22:28:45 +00:00
..
AArch64 [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
PowerPC [CodeGenPrepare] Removed duplicate logic. SimplifyCFG already knows how to speculate calls to cttz/ctlz. 2015-02-13 14:15:48 +00:00
R600 [CodeGenPrepare] Removed duplicate logic. SimplifyCFG already knows how to speculate calls to cttz/ctlz. 2015-02-13 14:15:48 +00:00
SPARC
X86 [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2002-05-21-PHIElimination.ll
2002-09-24-PHIAssertion.ll
2003-03-07-DominateProblem.ll
2003-08-05-InvokeCrash.ll
2003-08-17-BranchFold.ll
2003-08-17-BranchFoldOrdering.ll
2003-08-17-FoldSwitch-dbg.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2003-08-17-FoldSwitch.ll
2004-12-10-SimplifyCFGCrash.ll
2005-06-16-PHICrash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2005-08-01-PHIUpdateFail.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
2005-10-02-InvokeSimplify.ll
2005-12-03-IncorrectPHIFold.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-02-17-InfiniteUnroll.ll
2006-06-12-InfLoop.ll
2006-08-03-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-10-19-UncondDiv.ll
2006-12-08-Ptr-ICmp-Branch.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-11-22-InvokeNoUnwind.ll Don't promote asynch EH invokes of nounwind functions to calls 2015-02-11 01:23:16 +00:00
2007-12-21-Crash.ll
2008-01-02-hoist-fp-add.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-05-16-PHIBlockMerge.ll
2008-07-13-InfLoopMiscompile.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2008-09-08-MultiplePred.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-09-17-SpeculativeHoist.ll
2008-10-03-SpeculativelyExecuteBeforePHI.ll
2008-12-06-SingleEntryPhi.ll
2008-12-16-DCECond.ll
2009-01-18-PHIPropCrash.ll
2009-01-19-UnconditionalTrappingConstantExpr.ll
2009-05-12-externweak.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2010-03-30-InvokeCrash.ll
2011-03-08-UnreachableUse.ll
2011-09-05-TrivialLPad.ll
assume.ll
attr-noduplicate.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
basictest.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
branch-cond-merge.ll
branch-cond-prop.ll
branch-fold-dbg.ll DebugInfo: Move new hierarchy into place 2015-03-03 17:24:31 +00:00
branch-fold-test.ll
branch-fold-threshold.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
branch-fold.ll
branch-phi-thread.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
BrUnwind.ll
clamp.ll [SimplifyCFG] Add test for r229099 2015-02-13 11:08:40 +00:00
common-dest-folding.ll
CoveredLookupTable.ll
dbginfo.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
dce-cond-after-folding-terminator.ll
DeadSetCC.ll
duplicate-landingpad.ll Merge empty landing pads in SimplifyCFG 2015-03-24 22:28:45 +00:00
duplicate-phis.ll
EmptyBlockMerge.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
EqualPHIEdgeBlockMerge.ll
extract-cost.ll
ForwardSwitchConditionToPHI.ll
hoist-common-code.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
hoist-dbgvalue.ll Verifier: Check debug info intrinsic arguments 2015-03-15 01:21:30 +00:00
hoist-with-range.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
HoistCode.ll
indirectbr.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
invoke_unwind.ll
invoke.ll
iterative-simplify.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
lifetime.ll
MagicPointer.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
multiple-phis.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
no_speculative_loads_with_tsan.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
noreturn-call.ll
phi-undef-loadstore.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
PhiBlockMerge2.ll
PhiBlockMerge.ll [SimplifyCFG] Swap to using TargetTransformInfo for cost 2015-02-11 12:15:41 +00:00
PhiEliminate2.ll
PhiEliminate3.ll
PhiEliminate.ll
PHINode.ll
PhiNoEliminate.ll
PR9946.ll
PR16069.ll
PR17073.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
preserve-branchweights-partial.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
preserve-branchweights-switch-create.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
preserve-branchweights.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
return-merge.ll
seh-nounwind.ll Don't promote asynch EH invokes of nounwind functions to calls 2015-02-11 01:23:16 +00:00
select-gep.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
sink-common-code.ll [SimplifyCFG] Revise common code sinking 2014-12-23 08:26:55 +00:00
speculate-math.ll
speculate-store.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
speculate-vector-ops.ll
speculate-with-offset.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
SpeculativeExec.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
switch_create.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
switch_switch_fold.ll
switch_thread.ll
switch-masked-bits.ll
switch-on-const-select.ll
switch-range-to-icmp.ll SimplifyCFG: don't remove unreachable default switch destinations 2015-01-26 19:52:32 +00:00
switch-simplify-crash.ll
switch-to-br.ll Add some tests for SimplifyCFG's ConstantFoldTerminator(). NFC. 2014-12-04 22:19:25 +00:00
switch-to-icmp.ll
switch-to-select-multiple-edge-per-block-phi.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
switch-to-select-two-case.ll SimplifyCFG: don't remove unreachable default switch destinations 2015-01-26 19:52:32 +00:00
trap-debugloc.ll DebugInfo: Move new hierarchy into place 2015-03-03 17:24:31 +00:00
trapping-load-unreachable.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
two-entry-phi-return.ll
UncondBranchToReturn.ll
unreachable-blocks.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
UnreachableEliminate.ll SimplifyCFG: don't remove unreachable default switch destinations 2015-01-26 19:52:32 +00:00
volatile-phioper.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00