1997
DOI: 10.1145/262004.262006
|View full text |Cite
|
Sign up to set email alerts
|

Interprocedural control flow analysis of first-order programs with tail-call optimization

Abstract: Knowledge of low-level control flow is essential for many compiler optimizations. In systems with tail-call optimization, the determination of interprocedural control flow is complicated by the fact that because of tail-call optimization, control flow at procedure returns is not readily evident from the call graph of the program. This article shows how interprocedural control-flow analysis of first-order programs can be carried out using well-known concepts from parsing theory. In particular, we show that cont… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1

Citation Types

0
3
0

Year Published

2000
2000
2023
2023

Publication Types

Select...
3
3
1

Relationship

0
7

Authors

Journals

citations
Cited by 12 publications
(3 citation statements)
references
References 13 publications
0
3
0
Order By: Relevance
“…For example, event handlers registered for location change will be invoked when the location of the phone changes. Since there is no main method to organize these callbacks together, discontinuity will occur if we construct the call graph of a component in a traditional way [21,8,32,23,20] . Besides, since these entry points are invoked in an event-driven manner, we cannot pre-determine their order of execution.…”
Section: Call Graph and Invocation Chainmentioning
confidence: 99%
“…For example, event handlers registered for location change will be invoked when the location of the phone changes. Since there is no main method to organize these callbacks together, discontinuity will occur if we construct the call graph of a component in a traditional way [21,8,32,23,20] . Besides, since these entry points are invoked in an event-driven manner, we cannot pre-determine their order of execution.…”
Section: Call Graph and Invocation Chainmentioning
confidence: 99%
“…We do this backward search by transitively adding a summary edge fromς 3 toς 2 (line 25). Ifς 2 is a tail call (line 20), we find its successors and record the call in TCallers (lines [21][22][23]. If a successor ofς 2 goes to an exit, we propagate a summary transitively (line 24).…”
Section: Summarizationmentioning
confidence: 99%
“…However we view the need for such a subsequent analysis as a strong indication of a mismatch between the two analysis formulations. Debray and Proebsting [43] have investigated such a "return analysis" for a first-order language with tail-call optimization. The present paper builds a semantics-based CFA that determines such information, and for a higher-order language.…”
Section: Related Workmentioning
confidence: 99%