Master Informatique Fondamentale - M1 Compilation



Documents pareils
Chp. 4. Minimisation d une fonction d une variable

Limites finies en un point

Équations non linéaires

Calculabilité Cours 3 : Problèmes non-calculables.

Rappels sur les suites - Algorithme

Continuité et dérivabilité d une fonction

Théorème du point fixe - Théorème de l inversion locale

3 Approximation de solutions d équations

Image d un intervalle par une fonction continue

Chapitre 2. Eléments pour comprendre un énoncé

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Intégration et probabilités TD1 Espaces mesurés Corrigé

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Résolution d équations non linéaires

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

MIS 102 Initiation à l Informatique

Chapitre 2 Le problème de l unicité des solutions

Programmation linéaire

CCP PSI Mathématiques 1 : un corrigé

La fonction exponentielle

Développement décimal d un réel

Les structures de données. Rajae El Ouazzani

Correction du baccalauréat ES/L Métropole 20 juin 2014

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Fonctions de plusieurs variables

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

I. Polynômes de Tchebychev

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Université Paris-Dauphine DUMI2E 1ère année, Applications

Intégration et probabilités TD1 Espaces mesurés

Chapitre 5 : Flot maximal dans un graphe

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Correction du Baccalauréat S Amérique du Nord mai 2007

Les indices à surplus constant

Calcul fonctionnel holomorphe dans les algèbres de Banach

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test


FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Logique. Plan du chapitre

Raisonnement par récurrence Suites numériques

M2 IAD UE MODE Notes de cours (3)

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Cours d Analyse. Fonctions de plusieurs variables

V- Manipulations de nombres en binaire

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Dualité dans les espaces de Lebesgue et mesures de Radon finies

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Quantification Scalaire et Prédictive

Utilisation des tableaux sémantiques dans les logiques de description

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

Suites numériques 3. 1 Convergence et limite d une suite

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

1 Recherche en table par balayage

Représentation d un entier en base b

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

LES TYPES DE DONNÉES DU LANGAGE PASCAL

DOCM Solutions officielles = n 2 10.

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Machines virtuelles Cours 1 : Introduction

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Chapitre VI - Méthodes de factorisation

Correction de l examen de la première session

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

I. Ensemble de définition d'une fonction

Pourquoi l apprentissage?

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Filtrage stochastique non linéaire par la théorie de représentation des martingales

Qualité du logiciel: Méthodes de test

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

LE PROBLEME DU PLUS COURT CHEMIN

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Continuité d une fonction de plusieurs variables

Cours de mathématiques

REALISATION d'un. ORDONNANCEUR à ECHEANCES

n N = u N u N+1 1 u pour u 1. f ( uv 1) v N+1 v N v t

Le produit semi-direct

Résolution de systèmes linéaires par des méthodes directes

Initiation à l algorithmique

La mesure de Lebesgue sur la droite réelle

Cours d initiation à la programmation en C++ Johann Cuenin

Cours 7 : Utilisation de modules sous python

Structures algébriques

Sites web éducatifs et ressources en mathématiques

Problèmes de Mathématiques Filtres et ultrafiltres

Cours d Algorithmique et de Langage C v 3.0

Continuité en un point

Fondements de l informatique Logique, modèles, et calculs

Calculs de probabilités

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Chapitre 2. Classes et objets

Initiation à LabView : Les exemples d applications :

IV- Equations, inéquations dans R, Systèmes d équations

La demande Du consommateur. Contrainte budgétaire Préférences Choix optimal

Transcription:

Master Informatique Fondamentale - M1 Compilation Analyse Statique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 12 mai 2007 1 / 38

Indécidabilité de la Terminaison et de l Equivalence Assigning Meanings to Programs Analyse Statique Tout ce que l on peut savoir sur un programme sans l exécuter et en particulier sans connaître ses données C est la seule analyse que puisse faire un compilateur Avoir des informations sur un programme permet de mieux le compiler Exemple trivial : on peut enlever une instruction si on sait qu elle ne sera jamais exécutée ou que son résultat ne sera jamais utilisé. 2 / 38

Indécidabilité de la Terminaison et de l Equivalence Assigning Meanings to Programs Résultats classiques d indécidabilité, I Dès qu un langage de programmation est assez puissant (présence de boucles while), il est indécidable de savoir si un programme se termine [Turing] Esquisse de la preuve Un programme prend comme argument une chaîne de caractères et se termine en émettant une chaîne de caractères, et on note r := P(w) ou ne se termine pas. On peut coder un programme P par une chaîne de caractères [ P ] Raisonnement par l absurde : il existe une programme T tel que T ([ P ] w) retourne tt si le calcul de P(w) se termine et ff sinon. Soit T le programme T (x) = while(t (x x) = tt); Que fait T ([ T ]) = while(t ([ T ] [ T ]) = tt);? 3 / 38

Indécidabilité de la Terminaison et de l Equivalence Assigning Meanings to Programs Résultats classiques d indécidabilité, II L équivalence de deux programmes est indécidable. Soit Z qui retourne tt quelque soit son argument Soit P un programme quelconque. La terminaison de P est équivalent à l équivalence de {P(x); return(tt)} et de Z 4 / 38

Méthode de Floyd Pourquoi l Analyse Statique Indécidabilité de la Terminaison et de l Equivalence Assigning Meanings to Programs Il existe de nombreuses méthodes pour prouver des propriétés de programme. Méthode de Floyd. On réduit le graphe de contrôle à 3 types de sommets affectation test jointure plus un sommet de départ et un sommet de fin On associe un prédicat à chaque arc du GC. Le prédicat porte sur la valeur des variables du programme et on espère qu il est vrai chaque fois que l arc est traversé Pour chaque sommet, on doit prouver un théorème sur les prédicats des arcs incidents Si on y parvient, tous les prédicats sont vérifiés 5 / 38

Conditions de vérification Indécidabilité de la Terminaison et de l Equivalence Assigning Meanings to Programs P P P Q x := e; p? Q Q R R P Q[x e] P & p Q, P & p R P R, Q R 6 / 38

Indécidabilité de la Terminaison et de l Equivalence Assigning Meanings to Programs Problèmes Toute logique suffisamment puissante est indécidable Même si on connait les prédicats d entrée et de sortie, il est impossible d automatiser la construction des prédicats internes (spécialement les prédicats relatifs aux boucles) La méthode ne peut pas être intégrée à un compilateur 7 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves On se restreint à des prédicats de la forme x E où E est un sous-ensemble du domaine D x de la variable x Les ensembles E font partie d une échelle d ensembles prédéfinie, E qui doit contenir D x Pour que l on puisse faire marcher une analyse à la Floyd, il faut remplir les conditions suivantes : Jointure : E, F E G E : E F G. On pose G = E F Test : pour tout prédicat p du langage, E E G E : E p G. On pose G = p(e) Affectation : pour toute fonction f du langage, E E G E : f (E) G et des formules analogues pour les fonctions binaires, etc. On pose G = f (E) 8 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Conditions de vérification, II P x := e; P p? P Q Q Q R R Q = e(p) Q = p(p), R = p(p) R = P Q Il est facile de voir que si ces équations sont satisfaites, les critères de Floyd sont vérifiées et donc que les propriétés associées aux arcs sont vraies. 9 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Résolution On utilise en général la méthode des itérations chaotiques : A partir du graphe de contrôle, on écrit toutes les équations de l analyse. Soit P 1,..., P n les inconnues et D 1,..., D n leurs domaines On initialise P i à D i On range toutes inconnues P 1,..., P n dans une file d attente tant que la file d attente n est pas vide, extraire une inconnue P et recalculer sa valeur si cette valeur a changé, rajouter à la file d attente toutes les inconnues qui dépendent de P 10 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Questions de convergence Pour pouvoir garantir la convergence, on impose des conditions à l échelle d ensembles E : E doit être ordonné les opérations, e( ) et p( ) doivent être monotones Il ne doit pas exister dans E de chaîne infinie décroissante pour l inclusion Dans ces conditions l algorithme de résolution se termine après un nombre fini d itérations. 11 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Un exemple : Le Signe d une Variable Scalaire Le signe d une variable est un information intéressante : elle permet par exemple de supprimer une vérification avant d extraire une racine carrée. L échelle d ensemble est composé de sous-ensembles de IR : = IR ( ) = {x x 0} ( ) = {x x 0} (>) = {x x > 0} (0) = {0} (<) = {x x < 0} = La relation d ordre, notée, signifie est plus précis que : (0) ( ) : être nul est plus précis qu être non-négatif. (<=) T (<) (0) O/ (>=) (>) 12 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Règles de calcul, I On peut construire des tables de Pythagore pour les calculs sur ces objets. Par exemple, la somme d un nombre positif et d un nombre non-négatif est positive, soit : (>=) + (>) = (>). Il y a des cas où le signe du résultat ne peut pas être décidé : (>=) + (<=) =. + (<) (<=) (0) (>=) (>) (<) (<) (<=) (<=) (<=) (<) (<=) (<=) (0) (<) (<=) (0) (>=) (>) (>=) (>=) (>=) (>) (>) (>) (>) (>) 13 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Régles de calcul, II On constate que l addition reste associative et commutative. On peut construire des tables analogues pour les autres opérations (multiplication, division, changement de signe). On constate que ces opération sont monotones : plus les arguments sont précis, plus les résultats sont précis. Comme la longueur d une chaîne est au plus 4, l algorithme de résolution converge 14 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Cadre d analyse Un cadre d analyse est une structure mathématique permettant de raisonner sur des propriététs de programme. Le critère essentiel : les raisonnements doivent pouvoir être mis en facteurs ou mécanisés. Un cadre se compose de : Un ensemble ordonné qui représente les propriétés intéressantes. Un ensemble de fonctions qui représentent la façon dont les propriétés se transforment lors de l exécution du programme (i.e. lors du parcours du graphe de contrôle) Des règles pour écrire les équations satisfaites par les propriétés Un algorithme de résolution et sa preuve de convergence 15 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Demi treillis des propriétés On donne en général à l ensemble des propriétés une structure de demi-treillis L = (S,, ). est associative, commutative et idempotente (x x = x) est élément neutre pour : x = x La relation d ordre associée est x y x y = y. C est un ordre partiel en général. x < y = x y & x y En particulier, x : x On impose le plus souvent la propriété : Toute chaîne ascendante x 1 < x 2 <... < x n... est de longueur finie 16 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Fonctions de transfer A chaque sommet du graphe de contrôle, on doit pouvoir associer une fonction de transfer de L dans L. L espace des fonctions de transfer doit avoir les propriétés suivantes : Contenir l identité (l instruction NOP) être clos par composition (la séquence) ne contenir que des fonctions monotones : x y f (x) f (y) 17 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Point fixe Ces conditions garantissent que toute fonction a un point fixe la limite de la suite ascendante f n ( ) et que ce point fixe est le plus petit point fixe : Démonstration. Soit z un autre point fixe. z = f (z), donc z = f n (z). Comme f n est monotone, de z, on déduit f n ( ) f n (z) = z. CQFD 18 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Equations A chaque sommet du graphe de contrôle on associe une ou plusieurs équations dans L de l une des formes : x = f (y) pour une instruction d affectation on un test x = y z pour un point de jonction Le système obtenu est de la forme X = F (X ) où X est un tuple d éléments de L L algorithme itératif calcule un point fixe solution, et sa convergence est garantie par la condition de chaîne ascendante. 19 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Quelques exemples L analyse des signes remplit toutes les conditions ci-dessus Propagation des constantes entières propriétés : l ensemble des entiers IN plus un élément supplémentaire. x a la propriété n signifie que x est constante et égale à n x a la propriété signifie que x n est pas constante x < et x y = si x y fonctions : les règles de calcul usuelles plus x =. 20 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Le treillis des intervalles, I propriétés : x [a, b] [a, b] [c, d] = [min(a, c), max(b, d)] la condition de chaîne ascendante n est plus remplie : [ 1, 1] < [ 2, 2] <... On doit utiliser un accélérateur de convergence ou opérateur d élargissement 21 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Opérateur d élargissement Un opérateur d élargissement a les propriétés x y x, y quelque soit la suite x n, la suite (acendante) y 1 = x 1, y n+1 = y n x n se stabilise en un temps fini On forme la suite y 1 =, y n+1 = y n f (y n ) qui se stabilise par hypothèse. On montre que la limite y est une approximation du plus petit point fixe x de f : x y. 22 / 38

Cadres d analyse Demi treillis Fonctions monotones Equations Quelques exemples d analyses naïves Le treillis des intervalles, II Opérateur d élargissement : [a, b] [c, d] = [x, y] avec x = a si a = c sinon y = b si b = d sinon 23 / 38

Introduction Expressions disponibles Vivacité On peut être intéressé par des propriétés qui ne s expriment pas comme des contraintes sur les valeurs des variables : Exemples : les sources : S est une source de x en T si S écrit x et s il existe un chemin allant de S en T et ne passant par aucune écriture de x Pour calculer les sources (use-def chains) il suffit d étudier le programme obtenu en remplaçant toute instruction S : x := e; par x := S; 24 / 38

Introduction Expressions disponibles Vivacité Use-def chains Soit L l ensemble des labels du programme et V l ensemble des variables. Le treillis des propriétés est l ensemble des fonctions de V dans l ensemble des parties de L. f g = λx.f (x) g(x) La fonctionnelle associée à S : x := e; est F (f ) = λy.if x = ythen {S}else f (y). Cette fonction est clairement croissante L ordre associé à est l inclusion variable par variable. Toute chaîne ascendante se stabilise parce que les ensembles f (x) sont de taille bornée. 25 / 38

Introduction Expressions disponibles Vivacité Expressions disponibles Une expression est disponible en un point du programme si elle a été calculée précédemment et si aucun de ses arguments n a été modifié. Démarche analogue : Le programme transformé a une seule variable, D, l ensemble des expressions disponibles On note x e si la variable x figure dans l expression e On remplace une instruction x := e; par D := {f D x f } {e} On étudie des propriétés de la forme X D En un point de jonction, si les arcs entrants portent X et Y, l arc sortant porte X Y. 26 / 38

Vivacité Pourquoi l Analyse Statique Introduction Expressions disponibles Vivacité Pour construire les ensembles de variables vivantes, il faut imaginer que le graphe de contrôle est parcouru à l envers Un point de jonction devient un test, et un test devient un point de jonction Une variable devient vivante si elle est lue, et elle cesse d être vivante quand elle est écrite Pour le reste, l analyse est analogue à celle des expressions disponibles : une seule variable ; L une variable lue est ajoutée à L une variable écrite est enlevée de L 27 / 38

Introduction Construction Déconstruction peut être vue comme une représentation compacte des use-def chains taille linéaire plutôt que quadratique ou comme une mise en facteur de plusieurs analyses de flot de données Un programme est en forme SSA si : Toute variable scalaire ne figure qu une fois à gauche d une instruction d affectation En lecture, des pseudo-fonctions ont été insérée pour représenter le fait qu une même variable peut avoir plusieurs sources 28 / 38

Introduction Construction Déconstruction φ-fonctions if(x >= 0){ y =... ; } else { y =... ; } t = y ; if(x >= 0){ y 1 =... ; } else { y 2 =... ; } t = φ(y 1, y 2 ) ; La fonction φ est un sélecteur qui choisit la bonne valeur en fonction du chemin dans le graphe de contrôle Attention, la forme SSA est une représentation intermédiaire, pas un programme exécutable 29 / 38

Construction de la forme SSA Introduction Construction Déconstruction Méthode naïve : On construit les use-def chains On numérote les écritures Pour chaque lecture On détermine la liste des variables sources S il n y a qu une source, on la substitue à la variable lue Sinon, on crée une nouvelle variable, on lui affecte une φ-expression sur les sources, on la place au début du bloc de base courant, et on substitue la nouvelle variable à la variable lue On élimine les φ-expressions redondantes La méthode ci-dessus n est pas toujours optimale. 30 / 38

Sortie de SSA, I Pourquoi l Analyse Statique Introduction Construction Déconstruction est un intermédiaire sur lequel il est plus facile d effectuer des optimisations que sur le programme original Aprés optimisation, il faut revenir à un programme normal, c est-à-dire supprimer les φ fonctions Principe : on insère des instructions de copie : 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00 11 00000 11111 00 11 00 11 x3 = φ (x1,x2); 000 111 000 111 000 111 000 111 000 111 000 111 000 111 x3=x1; 1100 1100 1100 1100 00 11 00 11 00 11 000 111 000 111 000 111 000 111 000 111 000 111 000 111 x3=x2; 31 / 38

Introduction Construction Déconstruction Sortie de SSA, II Algorithme : Soit y = φ(a 1,..., a n ) une φ-expression. Pour chaque argument a k, il existe un unique bloc de base contenant une affectation à a k (définition de la SSA) Sur le dernier arc de chaque chemin simple allant de ce bloc de base à la φ-expression à éliminer, insérer une instruction y = a k. Les instructions ajoutées sur un arc peuvent étre regroupées dans de nouveaux blocs de base ou parfois être insérées dans la source ou la destination de l arc (quand cela n entraine pas d ambiguité). 32 / 38

Pourquoi l Analyse Statique Analyse avec mémoire Analyse sans mémoire Très importante : permet de savoir si une variable peut être mise dans un registre, si une expression est vraiment disponible, etc Exemple simple : les références de Java. Pas d arithmétique sur pointeur, pas d opérateur de calcul d adresse. Peut être réduit à 5 formes : p = new Class; p = null; p = q; p = q.a; p.a = q; Il existe deux types d analyses : Analyses avec mémoire : on cherche à schématiser l ensemble des objets accessibles depuis une référence Analyses sans mémoire : on cherche à approximer directement la relation d alias 33 / 38

Analyse avec mémoire Analyse avec mémoire Analyse sans mémoire On calcule pour chaque référence p et pour chaque point de programme l ensemble A p des objets accessibles à travers le pointeur p Un objet est nommé par le nom de sa classe et le label de l instruction qui le créé. L : p = new Class() A p := {Class(L)} p = null ; A p := Equations : p = q A p := A q p = q.a A p := A q p.a = q A p := A p A q On résoud ensuite par une méthode de point fixe. 34 / 38

Analyse avec mémoire Analyse sans mémoire Analyse sans mémoire, I L analyse cherche à estimer des relations d alias composées d item de la forme p.v, q.w où : p et q sont des références v et w sont des chaînes de sélecteurs (éventuellement vide). le sens d un tel item est que p.v et q.w peuvent pointer vers le même objet du tas On notera que d un tel item on peut en dériver d autres. Si a est un membre légal de l objet p.v alors p.v.a ets aliasé avec q.w.a. Un tel alias est dit implicite. Attention, la relation d alias n est pas transitive Le but de l analyse est d associer une relation d alias à chaque arc du graphe de contrôle. On sait déja qu après un poit de jonction on fait l union des relations entrantes. Il reste à traiter le cas des 5 instructions ci-dessus. 35 / 38

Analyse avec mémoire Analyse sans mémoire Analyse sans mémoire, II Notations : In et Out sont les relations d alias juste avant et juste aprés l instruction distinguée est la relation de préfixe : e f g : f = e.g e est l opération d efffacement des items contenant e : e (R) = { g, h e g & e h} [e f ] est l opération de substitution additive de e par f : [e f ]R = R { f.x, g e.x, g R} { g, f.x g, e.x R} 36 / 38

Analyse avec mémoire Analyse sans mémoire Analyse sans mémoire, III Effets : p = null ; et p = new.. ; détruisent les alias de p : Out = p (In) Les trois autres instructions peuvent être groupées sous la forme p.v = q.w ; où v et w sont des chaînes de sélecteurs éventuellement vides. Un premier effet est de détruire tous les alias de p.v Il faut ensuite ajouter l item p.v, q.w Enfin, tout ce qui est aliasé à q.w est maintenant aussi aliasé à p.v. Au total : Out = [q.w p.v] p.w (In) + p.v, q.w. 37 / 38

Analyse avec mémoire Analyse sans mémoire Analyse sans mémoire, IV Utilisation. Un exemple : l amélioration du calcul des expressions disponibles. Lorsque l on rencontre une écriture, on doit considérer que toutes les référencess en alias avec la référence modifiée sont modifiées On doit donc invalider toutes les expressions qui contiennent un alias, implicite ou explicite Ceci permet d étendre la recherche des calculs redondants à des langages à pointeurs. 38 / 38

Bilan Pourquoi l Analyse Statique Analyse avec mémoire Analyse sans mémoire Les renseignements obtenus par l analyse statique sont d une grande utilité pour le compilateur Cependant, la précision de l analyse est limitée par la méconnaissance des données On est obligé en général de considérer les deux directions possibles d un test On ne sait pas borner le nombre de tours des boucles 39 / 38