mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-27 14:34:58 +00:00
Added function IsLeafMethod to identify leaf methods.
This will use the CallGraph only if one is provided. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@950 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ac0ec47957
commit
a7edb1888c
@ -89,4 +89,18 @@ private: // Implementation of CallGraph construction
|
|||||||
|
|
||||||
} // end namespace cfg
|
} // end namespace cfg
|
||||||
|
|
||||||
|
|
||||||
|
//******************* Externally Visible Functions *************************/
|
||||||
|
|
||||||
|
|
||||||
|
// Checks if a method contains any call instructions.
|
||||||
|
// Note that this uses the call graph only if one is provided.
|
||||||
|
// It does not build the call graph.
|
||||||
|
//
|
||||||
|
bool IsLeafMethod (const Method* method,
|
||||||
|
const cfg::CallGraph* callGraph = NULL);
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -70,3 +70,26 @@ void cfg::WriteToOutput(const CallGraph &CG, ostream &o) {
|
|||||||
for (CallGraph::const_iterator I = CG.begin(), E = CG.end(); I != E; ++I)
|
for (CallGraph::const_iterator I = CG.begin(), E = CG.end(); I != E; ++I)
|
||||||
o << I->second;
|
o << I->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Checks if a method contains any call instructions.
|
||||||
|
// Note that this uses the call graph only if one is provided.
|
||||||
|
// It does not build the call graph.
|
||||||
|
//
|
||||||
|
bool IsLeafMethod(const Method* M, const cfg::CallGraph* CG) {
|
||||||
|
if (CG) {
|
||||||
|
const cfg::CallGraphNode *cgn = (*CG)[M];
|
||||||
|
return (cgn->begin() == cgn->end());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (Method::inst_const_iterator I = M->inst_begin(), E = M->inst_end();
|
||||||
|
I != E; ++I)
|
||||||
|
if ((*I)->getOpcode() == Instruction::Call)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user