Presentation is loading. Please wait.

Presentation is loading. Please wait.

Translation Validation for an Optimizing Compiler Guy Erez Based on George C. Necula article (ACM SIGPLAN 2000) Advanced Programming Languages Seminar,

Similar presentations


Presentation on theme: "Translation Validation for an Optimizing Compiler Guy Erez Based on George C. Necula article (ACM SIGPLAN 2000) Advanced Programming Languages Seminar,"— Presentation transcript:

1 Translation Validation for an Optimizing Compiler Guy Erez Based on George C. Necula article (ACM SIGPLAN 2000) Advanced Programming Languages Seminar, Winter 2000

2 2 In a Nutshell The Problem: Verify that the optimized and source code are equivalentThe Problem: Verify that the optimized and source code are equivalent Partial (heuristic) Solution: Independently prove the validity of each translation passPartial (heuristic) Solution: Independently prove the validity of each translation pass Motivation: Optimizer TestingMotivation: Optimizer Testing

3 3 Outline IntroductionIntroduction Intermediate LanguageIntermediate Language An extensive exampleAn extensive example –Simulation Relation –Execution Pair –Equivalence Checking Branch NavigationBranch Navigation Results and LimitationsResults and Limitations

4 4 Methods of Proving Compiler Correctness Prove compiler general correctness:Prove compiler general correctness: +absolute –tedious –impractical for large programs –very dependent of compiler code

5 5 Methods of Proving Compiler Corr. (cont.) Show that each translation phase was validShow that each translation phase was valid –weaker +proof per program +applicable for large programs +independent of compiler code

6 6 Compilation Process Source Code Intermediate Language (IL) Target Code

7 7 Optimization Process IL Code 0 Optimize Pass IL Code 1 IL Code n Validator

8 8 The IL in GNU C (subset) Instructions: Expressions:Instructions: Expressions: Operators:Operators:

9 9 An Example extern int g; extern int a[…]; main() { int n=… /* n contains the length of the array */ int i; for (i=0; i<n; i++) a[i]=g*i+3; return i; }

10 10 And in IL … for (i=0;i<n; i++) a[i]=g*i+3; return i;

11 11 After Transformation … Use registers Transform while to a repeat loop ?

12 12 Equivalence x 1, …,x n – variables in sourcex 1, …,x n – variables in source y 1, …,y m – variables in targety 1, …,y m – variables in target Variable Equivalence: x 1 = y 3Variable Equivalence: x 1 = y 3 Expression Equivalence: x 1 +x 2 = y 3 +6Expression Equivalence: x 1 +x 2 = y 3 +6

13 13 Simulation Relation A set of equivalences between a source block and a target blockA set of equivalences between a source block and a target block

14 14 Execution Pair Definition: An execution path in the source and its corresponding path in the targetDefinition: An execution path in the source and its corresponding path in the target Source Target

15 15 Checking Equivalence Equivalence is checked at the end of a specific execution pairEquivalence is checked at the end of a specific execution pair A variable value after the run is marked with a primeA variable value after the run is marked with a prime x x’=x+1 yy’=y*3 Symbolic Substitution

16 16 Equivalence Simplification An equivalence can be simplified using:An equivalence can be simplified using: –Arithmetic rules –Already proven equivalences Example: If x ’ =x+1 and y ’ =y*5 then: 3*x ’ =y ’  3*(x+1)=y*5  3*x+3=y*5Example: If x ’ =x+1 and y ’ =y*5 then: 3*x ’ =y ’  3*(x+1)=y*5  3*x+3=y*5 An equivalence holds if it can be simplified to an already proven equivalenceAn equivalence holds if it can be simplified to an already proven equivalence

17 17 Checking Simulation Relations A relation is correct if for each execution pair entering it, all of its equivalences holdA relation is correct if for each execution pair entering it, all of its equivalences hold xy x=y+1

18 18 Something fishy SimplerSimpler Provides an independent perspective on the final codeProvides an independent perspective on the final code What ’ s the point of proving something using the same rules that created it?What ’ s the point of proving something using the same rules that created it?

19 19 Showtime … A. Element #1 holds C. Prove elem. #2 (Trivial) B. There is only one execution pair (no cond.)

20 20 Element #5 Two execution pairs: b3-b1-b2 and b7-b5

21 21 Element #5 (cont.) The other pair: b3-b1-b3 and b7-b7

22 22 Known Equivalences Equivalences from the start of the run:Equivalences from the start of the run: Equivalences at the end of run:Equivalences at the end of run:

23 23 Need to Prove The path condition is correct:The path condition is correct: The equivalences hold, mainly:The equivalences hold, mainly:

24 24 Elem #5: Path Cond.

25 25 Elem #5: The Equivalence distributivitycommutativity Q.E.D

26 26 Algorithm Parts Inferring Simulation RelationsInferring Simulation Relations Finding execution pairsFinding execution pairs Solving ConstraintsSolving Constraints

27 27 Navigating Branches An optimizer might eliminate or reverse branchesAn optimizer might eliminate or reverse branches Problem: did branch B ’ originate from branch B in the sourceProblem: did branch B ’ originate from branch B in the source Solution: Use heuristicsSolution: Use heuristics

28 28 A Typical Case

29 29 Similarity The similarity between two branches depend on the similarity of their:The similarity between two branches depend on the similarity of their: –preceding instruction sequence –boolean conditions –the two branching sequences

30 30 Similarity (cont.) Formally:Formally: ~ is a numeric relation(0..1)~ is a numeric relation(0..1) “ and ” is multiplication“ and ” is multiplication “ or ” is maximum“ or ” is maximum

31 31 Boolean Similarity Branches are similar if:Branches are similar if: –one can be simplified into the other using simple transforms, such as:

32 32 Instruction Similarity Instructions similarityInstructions similarity –amount of function calls –lead to already related branches (in that case, similarity is 1.0)

33 33 Instruction Similarity … gcc specific featuresgcc specific features –IL instructions serial number –source line number information (for code duplication detection)

34 34 Results Detected a known bug in gcc 2.7.2.2Detected a known bug in gcc 2.7.2.2 Used on large programs:Used on large programs: Increased compile time x4Increased compile time x4

35 35 Limitations Cannot handle loop unrollingCannot handle loop unrolling Cannot resolve all types of equivalencesCannot resolve all types of equivalences Produces several false alarms (i.e. the gcc bug was accompanied by 3 false alarms)Produces several false alarms (i.e. the gcc bug was accompanied by 3 false alarms)

36 36 Conclusion Automatically infer equivalencesAutomatically infer equivalences Uses:Uses: –simple rules and substitution –heuristics Good resultsGood results Problems:Problems: –false alarms –runtime overhead


Download ppt "Translation Validation for an Optimizing Compiler Guy Erez Based on George C. Necula article (ACM SIGPLAN 2000) Advanced Programming Languages Seminar,"

Similar presentations


Ads by Google