LISTE DES AMELIORATIONS A APPORTER A l'OUTIL FNC2

                Mihaela Sighireanu
                Xavier Bouchoux
                Claude Chaudet
                Christophe Discours
                Mark Jorgensen
                Bruno Vivien
        
                INRIA Rhone-Alpes / VASY
                655, avenue de l'Europe
                38330 MONTBONNOT SAINT MARTIN
                FRANCE

Version 1.9 - Date 99/02/12 10:57:19
Number:         [VASY-FNC2-AM-6]
Report:         Christophe Discours
Tool:           
Status:         PARTIALLY DONE (v1.18)

Le repertoire .../Fnc2/doc est un peut fourre-tout : On y trouve des scripts, des docs et des sources. Il faudrait mettre un peu d'ordre : Les scripts iraient dans un repertoire .../Fnc2/com (ou .../Fnc2/bin ???), les sources dans .../Fnc2/src et le repertoire .../Fnc2/doc meriterait ainsi son nom.


Number:         [VASY-FNC2-AM-9]
Report:         Christophe Discours
Tool:           fnc2
Status:         ADMITTED By D.Parigot

Sous Linux on a les warnings suivants :

...

        /home/ubac/users/garavel/Parallelisme/SVL/SVLv1.5/src_fnc2/SVL__exp_auto.c: In function `v_46_153_17_18_20_30':
        /home/ubac/users/garavel/Parallelisme/SVL/SVLv1.5/src_fnc2/SVL__exp_auto.c:799: warning: cast from pointer to integer of different size
        /home/ubac/users/garavel/Parallelisme/SVL/SVLv1.5/src_fnc2/SVL__exp_auto.c:805: warning: cast from pointer to integer of different size
        /home/ubac/users/garavel/Parallelisme/SVL/SVLv1.5/src_fnc2/SVL__exp_auto.c: In function `v_46_153_17_18_20_31':
        /home/ubac/users/garavel/Parallelisme/SVL/SVLv1.5/src_fnc2/SVL__exp_auto.c:817: warning: cast from pointer to integer of different size
        /home/ubac/users/garavel/Parallelisme/SVL/SVLv1.5/src_fnc2/SVL__exp_auto.c:822: warning: cast from pointer to integer of different size
        /home/ubac/users/garavel/Parallelisme/SVL/SVLv1.5/src_fnc2/SVL__exp_auto.c: In function `v_46_153_17_18_20_32':

...

A la ligne 799 on a une commande qui ressemble a :

        f2___local (noeud,1) = (char *) F_SVL__exp_SOURCE_src_process_with_gates_2 ((BOOLEAN ) f2___impor (noeud,4),
        ...

Si on applique les regles de reecriture de cpp (macros definies dans f2unix.h), on obtient quelque chose comme :

        noeud->attr_local[1] = (char *) F_SVL__exp_SOURCE_src_process_with_gates_2 ((char ) noeud->attr[4],
        ...

On note que noeud est une structure de type f2___struct_node, dans laquelle les champs attr et attr_local sont definis comme des 'char **', et donc la valeur 'noeud->attr[4]' est de type 'char *'. Si les autres compilateurs laissent passer un cast de 'char *' vers 'char', sous Linux le compilateur fait remarquer que quand meme les 2 types n'ont pas la meme taille d'implementation. Puisque les champs attr[] et attr_local[] (qui sont la representation en C des attributs d'Olga il me semble ?) servent a stocker a la fois des types 'char' (les booleens), des types 'char *' (des strings) et je suppose egalement des types 'int', il vaudrait mieux les declarer sous forme d'union. Je remarque d'ailleur dans le fichier f2unix.h qu'il y a la declaration suivante :

...
/* For attributes storage */

        union f2_attr 
        {
        int INT;
        char CHAR;
        char *POINTEUR;
        }

...

Et ce type n'est jamais utilise !!!


Number:         [VASY-FNC2-AM-10]
Report:         Christophe Discours
Tool:           
Status:         ADMITTED By D.Parigot

Dans le meme ordre d'idee que la Modif 9, il me semble qu'il faudrait que tous les types/fonctions/macros de Fnc2 commence par F2 ou f2 (et SX ou sx pour Syntax). Par exemple il faudrait que la macro 'NODE' (qui permet d'ecrire plus facilement 'struct f2___struct_node') soit renommee en 'F2NODE', etc. Meme chose pour BOOLEAN (garder SXBOOLEAN et definir F2BOOLEAN).


Number:         [VASY-FNC2-AM-12]
Report:         Christophe Discours
Tool:           all
Status:         ADMITTED By D.Parigot

Un bon nombre d'identificateurs de Syntax et de Fnc2 ne sont pas prefixes par sx ou par f2 et risquent par consequent de creer des conflits.


Number:         [VASY-FNC2-AM-13]
Report:         Mihaela Sighireanu
Tool:           all

Status:

Lors de la construction/compilation, quand le code d'erreur est 2 il faudrait sortir immediatement


Number:         [VASY-FNC2-AM-14]
Report:         Mihaela Sighireanu
Tool:           asx_to_olga

Status:

asx_to_olga devrait avoir une option -nnul pour ne plus generer les "where null-*"


Number:         [VASY-FNC2-AM-15]
Report:         Mihaela Sighireanu
Tool:           ppat

Status:

Il faudrait permettre l'ecriture dans un fichier ppat plusieurs fois


Number:         [VASY-FNC2-AM-16]
Report:         Mihaela Sighireanu
Tool:           fnc2

Status:

La longueur des noms de fichiers est limitee dans fnc2...


Number:         [VASY-FNC2-AM-17]
Report:         Hubert Garavel
Tool:           fnc2

Status:

Il faudrait ajouter un lien avec un Garbage Collector au moment de la compilation finale avec FNC2 (en fin de LDFLAGS) afin d'etre certain que les compilateurs produits ne perdent pas de place en transformant des arbres.


IMPLEMENTED ENHANCEMENTS
Number:         [VASY-FNC2-AM-1]
Report:         Christophe Discours
Tool:           all
Status:         DONE (v1.18)

Faire en sorte que les programmes de Fnc2 (olga, fnc2, ppat, etc.) tournent avec l'option -noverbose par defaut.


Number:         [VASY-FNC2-AM-2]
Report:         Christophe Discours
Tool:           FNC2 Script
Status:         DONE (v1.18)

Modifier FNC2 (et prefnc2) pour qu'on puisse s'en servir de maniere non interactive. Les principales options de fonctionnement sont les suivantes : FNC2 -purge : Pour effacer tous ce qui est cree par FNC2. FNC2 -clean : Pour tout effacer sauf les binaires. FNC2 -debug : pour creer une version de 'debug'. FNC2 -install : Pour creer une version 'installable'.

D'autres options permettent de specifier le nom du compilateur, le nom du langage, la valeur de RHS, l'option -nnull.


Number:         [VASY-FNC2-AM-3]
Report:         Christophe Discours
Tool:           fnc2
Status:         DONE (v1.18)

Modifier makefnc2 et le programme mkfnc2 pour que l'on puisse utiliser make et cpp a la place de gmake et gcc, lorsque c'est possible (c'est a dire en dehors de Linux).


Number:         [VASY-FNC2-AM-4]
Report:         Christophe Discours
Tool:           fnc2
Status:         DONE (v1.18)

Modifier les autres scripts (debmkfnc2 et makemkfnc2) pour qu'ils soient plus propres.


Number:         [VASY-FNC2-AM-5]
Report:         Christophe Discours
Tool:           all
Status:         DONE (v1.18)

Si certains scripts ne servent plus, les enlever de la distribution. Je pense en particulier a :

FNC2_LISP, Xfnc2, Xvisu, debmkfnc2_lisp, makefnc2_lisp, makemkfnc2_lisp, prefnc2_lisp (et xfnc2.txt).


Number:         [VASY-FNC2-AM-7]
Report:         Christophe Discours
Tool:           fnc2
Status:         DONE (v1.18)

Elle peut peut-etre etre faite avec la Modif 3 : mkfnc2 cree dans les makefiles des regles ou les commandes debutent par des quotes "vides" (exemple : ''fnc2 -H ../incl_fnc2/ -C ../src_fnc2 -A ../f2aux ...). Il faut les supprimer.


Number:         [VASY-FNC2-AM-8]
Report:         Christophe Discours
Tool:           fnc2
Status:         DONE (v1.18)

Dans SVL (mais on a le meme phenomene avec TRAIAN et les autres compilateurs) : Le fichier SVL-in_atc.c est cree sans fin-de-ligne a la fin. Les compilateurs (cc et gcc) arrivent a s'en sortir mais affichent un warning. Il faut corriger ca.


Number:         [VASY-FNC2-AM-11]
Report:         Christophe Discours
Tool:           FNC2 Script
Status:         DONE (v1.18)

Reecrire le script FNC2 en sh au lieu de csh (sh permet de definir des fonctions, donc ca devrait etre plus propre).

(Modif 11a: modifier egalement makefnc2)


Number:         [VASY-FNC2-AM-12]
Report:         Christophe Discours
Tool:           
Status:         DONE (v1.18)

Ajouter la documentation du script FNC2 dans la doc.


Back to the VASY Home Page