2004
DOI: 10.1023/b:lisp.0000029444.99264.c0
|View full text |Cite
|
Sign up to set email alerts
|

Compiler Optimization Correctness by Temporal Logic

Abstract: Rewrite rules with side conditions can elegantly express many classical compiler optimizations for imperative programming languages. In this paper, programs are written in an intermediate language and transformation-enabling side conditions are specified in a temporal logic suitable for describing program data flow. The purpose of this paper is to show how such transformations may be proven correct. Our methodology is illustrated by three familiar optimizations: dead code elimination, constant folding, and cod… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
15
0

Year Published

2006
2006
2012
2012

Publication Types

Select...
6
2

Relationship

1
7

Authors

Journals

citations
Cited by 28 publications
(15 citation statements)
references
References 37 publications
0
15
0
Order By: Relevance
“…We have extended Gordon's LTS semantics to incorporate additional language constructs and also to allow terms that contain free variables. Bisimulation has previously been used to prove the correctness of program transformations for imperative languages, which lend themselves more naturally to a labelled transition system semantics [11]. The focus of all the previous work on applying bisimulation techniques to functional programs was not on proving the correctness of program transformations.…”
Section: Theorem 3 (Correctness Of Folding)mentioning
confidence: 99%
“…We have extended Gordon's LTS semantics to incorporate additional language constructs and also to allow terms that contain free variables. Bisimulation has previously been used to prove the correctness of program transformations for imperative languages, which lend themselves more naturally to a labelled transition system semantics [11]. The focus of all the previous work on applying bisimulation techniques to functional programs was not on proving the correctness of program transformations.…”
Section: Theorem 3 (Correctness Of Folding)mentioning
confidence: 99%
“…Cobalt can then either interpret the optimization or produce proof obligations for it to be correct (semantics-preserving). The formalism and techniques used for this were previously used to prove optimizations correct manually by Lacey et al [91]. For correctness conditions to be generated, each analysis must specify the semantic property that it represents for each program point.…”
Section: Program Semantics and Abstract Interpretation A Number Of Smentioning
confidence: 99%
“…Recently, program matching languages that combine descriptions of code fragments with information about the control-flow paths between them have been found useful in specifying rules for program manipulation tasks such as compiler optimizations [16,17], bug finding [10], refactorings [24], and evolution [20].…”
Section: Introductionmentioning
confidence: 99%
“…CTL model checking [7,12] is then used to find the nodes in the control-flow graph that satisfy the formula, thus identifying where the pattern matches in the program. To support the specification of compiler optimizations, Lacey and De Moor extended CTL first with predicates over free variables, producing the logic CTL-FV [17], and then with predicates over variables that may be existentially quantified, producing a logic that we refer to as CTL-V [15]. The former allows collecting information about the program during the matching process, via variable bindings, and imposing constraints on the allowed subterms when a given variable is matched more than once.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation