2015
DOI: 10.1007/978-3-319-22102-1_6
|View full text |Cite
|
Sign up to set email alerts
|

Validating Dominator Trees for a Fast, Verified Dominance Test

Abstract: The problem of computing dominators in a control flow graph is central to numerous modern compiler optimizations. Many efficient algorithms have been proposed in the litterature, but mechanizing the correctness of the most sophisticated algorithms is still considered as too hard problems, and to this date, verified compilers use less optimized implementations. In contrast, production compilers, like GCC or LLVM, implement the classic, efficient Lengauer-Tarjan algorithm [12], to compute dominator trees. And su… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
14
0

Year Published

2015
2015
2023
2023

Publication Types

Select...
4
1
1

Relationship

2
4

Authors

Journals

citations
Cited by 8 publications
(14 citation statements)
references
References 17 publications
0
14
0
Order By: Relevance
“…The log files record permutations as their output on the set [n], so for example the transposition over [4] exchanging 0 and 2 would be represented as {2, 1, 0, 3}. Since we want to be skeptic about the oracle, we do not assume anything about the lists we are given; rather, we show that the property of a list of natural numbers corresponding to a permutation on [n] is decidable.…”
Section: Permutationsmentioning
confidence: 99%
“…The log files record permutations as their output on the set [n], so for example the transposition over [4] exchanging 0 and 2 would be represented as {2, 1, 0, 3}. Since we want to be skeptic about the oracle, we do not assume anything about the lists we are given; rather, we show that the property of a list of natural numbers corresponding to a permutation on [n] is decidable.…”
Section: Permutationsmentioning
confidence: 99%
“…Figure 5 presents selected rules defining the small-step operational semantics of CSSA, expressed as a labelled transition system on execution states, whose transitions are of the form σ e − → CSSA σ . For the instruction set we consider here in the paper, the observable event e labelling the transition will be the silent event 2 , and execution states σ (defined in Figure 5) are simple tuples (f, pc, rs) gathering the function f being executed, the current program point pc (a node in the code pointing the next instruction to execute), and the current local environment rs, (finitely) mapping variables 2 The full formalization of the language does handle non-silent transitions. In Figure 5, rule NopNJP is the simplest one.…”
Section: Semanticsmentioning
confidence: 99%
“…After a normalization phase of RTL, we generate from there the SSA form of the code, and perform SSA-based optimizations. The generation and optimization phases are described in [1,2,12]. The work presented in this paper is represented inside the grey area.…”
Section: Introductionmentioning
confidence: 99%
“…3) adapting the ideas of [7] to CompCertSSA, including some advanced optimizations; -a proof of correctness of this algorithm (Sect. 4…”
Section: Introductionmentioning
confidence: 99%