alliance-programmers '1998
Fichier Solaris.mk en gcc.


Grégoire AVOT (Gregoire.Avot@asim.lip6.fr)
Fri, 20 Feb 1998 19:42:05 +0100

Cher Môsieur Alliance, J'ai retiré dans les CFLAGS du fichier /users/soft5/newlabo/share/etc/Solaris.mk l'option de compilation -O4, celle-ci étant incompatibles avec le -Wall dans gcc (en clair, des messages d'erreurs non significatifs apparaissent durant les compilations). Voici ce que dit un man gcc : These warnings are possible only in optimizing compila- tion, because they require data flow information that is computed only when optimizing. If you don't specify `-O', you simply won't get these warnings. En gros, certains warning "sensibles" n'apparaissent que si l'option -O est sélectionnée, c'est donc très bien. Malheureusement, rien ne fonctionne comme cela le devrait : #include <stdio.h #include <stdlib.h int main(void); int main(void) { int b,i; int x,y; x = 1/y; for( i = 0 ; i<4 ; i++ ) if( i == 2 ) b=2; return(b); } Provoque comme sortie de compilation : gregoire@valse:/tmp/greg gcc -O2 -Wall -c toto.c toto.c: In function `main': toto.c:8: warning: `b' might be used uninitialized in this function Alors que b est systématiquement initialisé, et que l'exéctution de 1/y peut très bien aboutir à un "floatting exception"... sauf si on utilise x par la suite (par exemple un printf), on obtient alors un message comme pour b. L'exécution de : gregoire@valse:/tmp/greg gcc -Wall -c toto.c ne détecte rien du tout (comme ça, on est pas embété !). Les gouroux du C vont sans doute dire qu'il vaut mieux avoir des warnings faux que risquer de rater le "vrai" warning, mais il faut être réaliste : si je lance un Makefile en sachant que plein de messages parasites apparaissent, je ne vais jamais y préter attenttion, le mieux risque d'être pour moi et les autres l'ennemi du bien. En résumé, je pense qu'il est mieux de ne pas spécifier le O4 (qui d'ailleur n'existe pas, le gcc va jusqu'à O3), et de ne laisser que le -Wall par défaut, qui oblige à respecter pas mal de choses. N'importe qui pourra lors de ses compilations utiliser le -Oquelquechose localement. Pour pouvoir m'en sortir ce week-end, j'ai donc (légèrement) abusé de mes droits de root et modifié le fichier Solaris.mk en ne laissant que le -Wall. Qu'en penses tu ? -- Gregoire AVOT Universite Pierre & Marie Curie Laboratoire LIP6 - Dpt ASIM 4 Place Jussieu, Paris Cedex 05 Couloir 55-65, 2eme etage. Tel (portable) : 06.68.55.26.33 http://asim.lip6.fr/~gregoire/index.html

 



Alliance Web Site © 1997, 2002 ASIM/LIP6/UPMC, page maintained by Czo [Olivier Sirol] , last updated on 22 March 2001.