diff options
author | James Molloy <james.molloy@arm.com> | 2015-11-12 08:53:04 +0000 |
---|---|---|
committer | James Molloy <james.molloy@arm.com> | 2015-11-12 08:53:04 +0000 |
commit | b14994e7525d20cb97ce9ebef18802cb038c5d66 (patch) | |
tree | 61362001c7b92ecfea48d181b7e538ec35931ada /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp | |
parent | 71a51ff10ee175f3dadc40062950a8110ce4e832 (diff) | |
download | bcm5719-llvm-b14994e7525d20cb97ce9ebef18802cb038c5d66.tar.gz bcm5719-llvm-b14994e7525d20cb97ce9ebef18802cb038c5d66.zip |
[FunctionAttrs] Identify norecurse functions
A function can be marked as norecurse if:
* The SCC to which it belongs has cardinality 1; and either
a) It does not call any non-norecurse function. This includes self-recursion; or
b) It only has one callsite and the function that callsite is within is marked norecurse.
a) is best propagated bottom-up and b) is best propagated top-down.
We build up the norecurse attributes bottom-up using the existing SCC pass, and mark functions with no obvious recursion (but not provably norecurse) to sweep later, top-down.
llvm-svn: 252862
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
0 files changed, 0 insertions, 0 deletions