The inliner was choosing to not consider call sites

that appear in the SCC as a result of inlining as candidates
for inlining.  Change this so that it *does* consider call 
sites that change from being indirect to being direct as a
result of inlining.  This allows it to completely 
"devirtualize" the testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102146 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2010-04-22 23:37:35 +00:00
parent 3a1287b470
commit fe9af3b1f7
4 changed files with 50 additions and 6 deletions
+6 -1
View File
@@ -174,10 +174,15 @@ public:
/// StaticAllocas - InlineFunction fills this in with all static allocas that
/// get copied into the caller.
SmallVector<AllocaInst*, 4> StaticAllocas;
/// DevirtualizedCalls - InlineFunction fills this in with callsites that were
/// inlined from the callee that went from being indirect calls to direct
/// calls due to inlining. This is only filled in if CG is non-null.
SmallVector<Instruction*, 2> DevirtualizedCalls;
void reset() {
StaticAllocas.clear();
DevirtualizedCalls.clear();
}
};