Karlsruher Institut f¨ ur Technologie
Lehrstuhl f¨ ur Programmierparadigmen
Sprachtechnologie und Compiler, Sommersemester 2014 Dozent: Prof. Dr.-Ing. G. Snelting
Ubungsleiter: Sebastian Buchwald¨ Sebastian.Buchwald@kit.edu
Ubungsblatt 9¨ Ausgabe: 24.6.2014 Besprechung: 30.6.2014
Aufgabe 1:Datenflussanalyse f¨ur Konstantenpropagation
Gegeben sei die Funktionf und der zugeh¨orige Kontrollflussgraph:
i n t f ( ) { i n t x = 1 ; while ( . . . ) {
x = 2 − x ; }
return x ; }
Start
x= 1
(conditional branch)
x= 2−x returnx
End 1
2
3
4 5
6
1.1Konstantenpropagation
Mittels Datenflussanalyse soll eine Konstantenpropagation f¨urfdurchgef¨uhrt werden.
1. Geben Sie einen geeigneten Verband an.
2. Geben Sie die Transferfunktionen f¨ur jeden Grundblock an.
3. F¨uhren Sie eine Fixpunktiteration durch. Welche Programmstellen k¨onnen mit der gewonnenen Informa- tion optimiert werden?
1.2Unerreichbarer Code
Die Funktiongist eine modifizierte Version vonf:
i n t g ( ) { i n t x = 1 ; while ( . . . ) {
x = 2 − x ; i f ( x != 1 ) {
x = 2 ; }
}
return x ; }
Start
x= 1
(conditional branch)
x= 2−x t = x != 1
x= 2 returnx
End 1
2
3
4
5
6 7
8
1
1. Geben Sie den Verband und die dazugeh¨origen Transferfunktion f¨ur g an. Orientieren Sie sich dabei an der letzten Teilaufgabe. Warum erzielt die Datenflussanalyse nicht mehr das gew¨unschte Ergebnis?
2. Erweitern Sie ihren Verband und die dazugeh¨origen Transferfunktionen, um das gefundene Problem zu beheben.
3. F¨uhren Sie eine Fixpunktiteration mit den erweiterten Transferfunktionen durch.
2