2011
DOI: 10.1002/spe.1059
|View full text |Cite
|
Sign up to set email alerts
|

A study of irreducibility in C programs

Abstract: SUMMARY Compilers use a variety of techniques to optimize and transform loops. However, many of these optimizations do not work when the loop is irreducible. Node splitting techniques transform irreducible loops into reducible loops, but many real‐world compilers choose to leave them unoptimized. This article describes an empirical study of irreducibility in current versions of open‐source software, and then compares them with older versions. We also study machine‐generated C code from a number of software too… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
7
0

Year Published

2014
2014
2021
2021

Publication Types

Select...
5
1
1

Relationship

0
7

Authors

Journals

citations
Cited by 16 publications
(7 citation statements)
references
References 35 publications
(46 reference statements)
0
7
0
Order By: Relevance
“…Figure 7 shows its improvement over SCFR in terms of branch statements. Static branch counts are not directly proportional to program runtime, but we regard them as indicative of overheads incurred by other methods [Janssen and Corporaal 1997;Unger and Mueller 2002;Stanier and Watson 2011]. We note that graphs generated by SCFR greatly resemble results produced by Johnson's algorithm [Johnson 2004], suggesting that their overheads are comparable.…”
Section: Key Observationsmentioning
confidence: 94%
See 1 more Smart Citation
“…Figure 7 shows its improvement over SCFR in terms of branch statements. Static branch counts are not directly proportional to program runtime, but we regard them as indicative of overheads incurred by other methods [Janssen and Corporaal 1997;Unger and Mueller 2002;Stanier and Watson 2011]. We note that graphs generated by SCFR greatly resemble results produced by Johnson's algorithm [Johnson 2004], suggesting that their overheads are comparable.…”
Section: Key Observationsmentioning
confidence: 94%
“…Janssen and Corporaal [1997] and Unger and Mueller [2002] use controlled node splitting to transform irreducible CFGs to reducible ones. Although irreducible control flow is extremely rare in practice [Stanier and Watson 2011] and their results are encouraging in terms of code bloat, it is proven that node splitting results in exponential blowup for particular CFGs [Carter et al 2003]. …”
Section: Control Flow Restructuringmentioning
confidence: 99%
“…For simplicity of presentation, we assume that every client CFA contains only one call to the library, and that every client CFA is reducible. We relax the first assumption in Sec 4, and note that the second assumption is innocuous since irreducible control-flow is rare in practice [33]. For the remainder of this section, let be the old version of the library CFA, be the new version of the library CFA, and be the client CFA with a single library call on an edge .…”
Section: Clever At a High Levelmentioning
confidence: 99%
“…This choice is justified by the fact that irreducible control flow is very rare in practice (e.g. see the study in [25]). For analyzing irreducible programs we propose to use program transformations that make the program reducible; we do not elaborate this idea further due to lack of space.…”
Section: Lossy Vasss and Basic Definitionsmentioning
confidence: 99%