Re: Dead code removal / cross references

Xavier Leroy (xleroy@pauillac.inria.fr)
Mon, 14 Nov 1994 11:38:32 +0100 (MET)

From: Xavier Leroy <xleroy@pauillac.inria.fr>
Message-Id: <9411141038.AA04420@pauillac.inria.fr>
Subject: Re: Dead code removal / cross references
To: Judicael.Courant@lip.ens-lyon.fr (Judicael Courant)
Date: Mon, 14 Nov 1994 11:38:32 +0100 (MET)
In-Reply-To: <9411100811.AA02292@lip.ens-lyon.fr> from "Judicael Courant" at Nov 10, 94 09:11:51 am

> j'aimerais disposer d'outils permettant d'avoir des
> références croisées

> quels modules sont utilisés par tel module ?
La distribution contient un script (src/runtime/camldep) qui produit
des listes de dependances pour make. Essentiellement, il determine
quels modules sont references (via #open ou la notation __) dans un
fichier source. Cet outil n'est pas 100% exact (p.ex. le code mis en
commentaires n'est pas ignore), mais fait l'affaire pour un Makefile.

> ou est définie telle fonction ?
L'outil mletags (contrib/mletags dans la distribution) fait a peu pres
ca. Il construit un "tag file" pour Emacs qui indexe les definitions
de globaux.

> ou est appelée telle fonction ?
Les fonctions etant des valeurs de premiere classe, la reponse exacte
a cette question est difficile.

> détecter et éliminer les #open inutiles
Ca serait utile, en effet, mais ca n'est pas facile.

> et le code mort (relativement a un ou des fichiers donnés).
Le linker elimine le code des phrases qui definissent des globaux
jamais references (pourvu que ces phrases n'aient evidemment pas
d'effets de bord).

- Xavier Leroy