From 2688bcbee188c1b5071f3a2b38923cd06013f490 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 27 Oct 2009 21:27:42 +0000 Subject: Random updates to passes for indbr, I need blockaddress before I can do much more. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85316 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/InlineCost.cpp | 3 +++ lib/Analysis/SparsePropagation.cpp | 5 +++++ 2 files changed, 8 insertions(+) (limited to 'lib/Analysis') diff --git a/lib/Analysis/InlineCost.cpp b/lib/Analysis/InlineCost.cpp index febdd91..559f468 100644 --- a/lib/Analysis/InlineCost.cpp +++ b/lib/Analysis/InlineCost.cpp @@ -31,6 +31,9 @@ unsigned InlineCostAnalyzer::FunctionInfo:: // Eliminating a switch is a big win, proportional to the number of edges // deleted. Reduction += (SI->getNumSuccessors()-1) * 40; + else if (isa(*UI)) + // Eliminating an indirect branch is a big win. + Reduction += 200; else if (CallInst *CI = dyn_cast(*UI)) { // Turning an indirect call into a direct call is a BIG win Reduction += CI->getCalledValue() == V ? 500 : 0; diff --git a/lib/Analysis/SparsePropagation.cpp b/lib/Analysis/SparsePropagation.cpp index b7844f0..6578cb4 100644 --- a/lib/Analysis/SparsePropagation.cpp +++ b/lib/Analysis/SparsePropagation.cpp @@ -166,6 +166,11 @@ void SparseSolver::getFeasibleSuccessors(TerminatorInst &TI, return; } + if (IndBrInst *IBI = dyn_cast(TI)) { + Succs.assign(Succs.size(), true); + return; + } + SwitchInst &SI = cast(TI); LatticeVal SCValue; if (AggressiveUndef) -- cgit v1.1