La nouvelle version majeure du compilateur GCC du projet GNU (GNU Compiler Collection) vient de sortir.
Le grand changement est l'intégration de la technologie SSA (Static Single Assignement). Cela permet de faire une analyse abstraite du code source afin d'obtenir des optimisations générales et non plus de se limiter aux boucles précises et autres parties du code. C'est une amélioration majeure de l'architecture de GCC qui est ainsi mise en place pour le bénéfice de tous les utilisateurs du compilateur libre.
Il est à noter que cette version 4.0 ne sera que marginalement plus performante que le GCC actuel car le travail a porté surtout sur l'intégration propre et correcte de l'infrastructure tree-SSA. Les améliorations seront bien plus visibles avec la sortie de la 4.1 qui verra l'arrivée de l'autovectorisation et d'autres nouvelles techniques uniquement permises par tree-SSA.
Par contre il semble bien que la vitesse de compilation ait grandement été améliorée dès cette version 4.0 (plus de 20% avec le C++ dans certains cas).
Le grand changement est l'intégration de la technologie SSA (Static Single Assignement). Cela permet de faire une analyse abstraite du code source afin d'obtenir des optimisations générales et non plus de se limiter aux boucles précises et autres parties du code. C'est une amélioration majeure de l'architecture de GCC qui est ainsi mise en place pour le bénéfice de tous les utilisateurs du compilateur libre.
Il est à noter que cette version 4.0 ne sera que marginalement plus performante que le GCC actuel car le travail a porté surtout sur l'intégration propre et correcte de l'infrastructure tree-SSA. Les améliorations seront bien plus visibles avec la sortie de la 4.1 qui verra l'arrivée de l'autovectorisation et d'autres nouvelles techniques uniquement permises par tree-SSA.
Par contre il semble bien que la vitesse de compilation ait grandement été améliorée dès cette version 4.0 (plus de 20% avec le C++ dans certains cas).
Les changements (984 hits)
Explication sur le changement d'architecture de GCC (1893 hits)
Commentaires sur OSNews (359 hits)
Autovectorisation (566 hits)
News d'octobre 2003 sur les nouveautées de GCC (400 hits)
Explication sur SSA (886 hits)
> Lire la dépêche (50 commentaires, moyenne: 3,9).
Vous avez demandé le commentaire #565469.




À quand son utilisation partout ?
Actuellement, debian stable utilise gcc 2.95
La plupart des distributions utilisent gcc 3.2 ou 3.3...
Quand est-ce-que toutes les distributions utiliseront gcc 4.0 par défaut ? D'ici 3 ans, histoire que gcc 5.0 soit là avec d'autres "strictitudes" en plus ?
Parce que trop d'applications ne compilent pas avec gcc4, et certaines ne passent même pas sur gcc3.4 ! Quand toutes les distribs utiliseront gcc4, toutes les applis seront "obligées" de compiler dessus...
Mais d'ici là, comment feront ceux qui font une LFS et qui veulent compiler plus vite (et profiter de -fvisibility) ? Patcher tous les programmes pour ça est tout sauf marrant !
[^]Re: À quand son utilisation partout ?
Bah Fedora et Ubuntu utilisent déjà et Mandriva ca va se faire dans les jours qui viennent...
[+] [^]Re: À quand son utilisation partout ?
Actuellement, debian stable utilise gcc 2.95
Lol \O/
[^]Re: À quand son utilisation partout ?
Dans les cas d'utilisations courants, GCC 2.95 n'a pas à rougir de GCC 3.x. Il est bien plus rapide que la série 3.x, pour des performances proches.
[^]Re: À quand son utilisation partout ?
Pour compiler du C ou du C++ c'est vrai ca suffit ! Pour le reste ADA, java les versions 3 sont indispensables.
Cela dit gcc 2.95 est resté dans les annales comme le premier gcc qui compilaient les templates sans fautes....
Slackware depuis 1996
[^]Re: À quand son utilisation partout ?
> Dans les cas d'utilisations courants, GCC 2.95 n'a pas à rougir de GCC 3.x. Il est
> bien plus rapide que la série 3.x, pour des performances proches.
Bien plus rapide oui, je veux bien te l'accorder. Pour compiler du C, gcc 2.95 convient parfaitement. Mais pour du C++ c'est autre chose : non seulement gcc 2.95 est relativement éloigné de la norme c++ (notamment au niveau de la bibliothèque standard), mais cette norme a aussi évolué entre temps. Pour développer en C++ propre, utiliser gcc 2.95 serait une erreur.
C'est vrai que gcc 3.x est très lent en c++, mais depuis gcc 3.4 on peut utiliser les en-têtes précompilés, et côté vitesse de compilation, ça change la vie ! \o/
[^]Re: À quand son utilisation partout ?
> Pour développer en C++ propre, utiliser gcc 2.95 serait une erreur.
Je dirai meme, pour developpe en C++ standard, utiliser n'importe quel compilateur est une erreur. En effet, il n'existe a ce jour aucun compilateur qui supporte completement et correctement l'integratlite de la norme C++.
Du coup, on se demande a quoi sert cette norme.
phil.freehackers.org
[^]Re: À quand son utilisation partout ?
Du coup, on se demande a quoi sert cette norme.
Bah on va dire que c'est le graal des compilateurs C++ :)
euh bon graal me plait pas (oui bon l'abus de da vinci code est nuisible à la santé)
Enfin l'idée et la
[+] [^]Re: À quand son utilisation partout ?
Du coup on se demande à quoi sert ce langage :)
Pas portable, lent, cela me rappelerait presque Java, sauf que ce n'est pas du tout comparable !
[^]Re: À quand son utilisation partout ?
>> Parce que trop d'applications ne compilent pas avec gcc4, et certaines ne passent même pas sur gcc3.4 !
est-ce la faute de GCC ou de ces applis ? GCC respecte la norme ISO pour le C et donc les applis (si elles se conforment à la norme internationale) devraient compiler.
En plus ce que tu nomme "strictitude" moi je le nomme "moyen-d'encourager-la-propreté-des-codes" ;-)
c'est en étant plus strict qu'on detecte des erreurs et des saletés cachées dans les sources.
[^]Re: À quand son utilisation partout ?
Oui tout à fait.
Pour moi, strict n'est pas vraiment négatif, surtout dans le cas d'un langage de programmation
[^]Re: À quand son utilisation partout ?
> est-ce la faute de GCC ou de ces applis ? GCC respecte la norme ISO
> pour le C et donc les applis (si elles se conforment à la norme
> internationale) devraient compiler.
En pratique, j'ai pas l'impression que ce soit le C qui pose le plus de problèmes (là je pense que l'ISO est à peu près connu... encore que, tu prends le noyau, les patchs pour gcc4 étaient nombreux ces derniers mois, comme l'ont été il y a un moment ceux pour gcc3.4 un temps, et les autres avant), mais plus le C++. J'ai l'impression que là, pour pas mal de programmeurs, le standard en vigueur c'est vraiment ce qui compile avec leur g++ du moment.
[^]Re: À quand son utilisation partout ?
"Debian stable utilise 2.95. "
A l'époque, où Woody est sorti (c'est vrai c'était il y a 3 ans !!) gcc 3 avait encore quelques casseroles.
Slackware depuis 1996
[^]Re: À quand son utilisation partout ?
et gcc 3.4 en connait aussi quelques unes (ca fait quelques temps que je l'ai pas teste non plus)...
[^]Re: À quand son utilisation partout ?
Pourrais-tu en siter quelques-unes?
Je n'en ai jamais rencontré (avec 3.4, parceque avec le CVS de la 4.0, c'était déjà plus folklo)...
[^]Re: À quand son utilisation partout ?
Par exemple https://linuxfr.org/forums/31/5533.html(...) qui avait donne lieux a http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19005.(...)
En fesant une recherche sur le bugzilla de gcc, tu devrais trouver quelques regressions de ce genre.
[^]Re: À quand son utilisation partout ?
> Quand toutes les distribs utiliseront gcc4, toutes les applis seront "obligées" de compiler dessus..
J'aurais tendance à dire « vivement qu'*une* distrib utilise gcc 4, comme ça la plupart des applis compileront avec »
> comment feront ceux qui font une LFS et qui veulent compiler plus vite ? Patcher tous les programmes pour ça est tout sauf marrant !
Il suffit qu'il y ait une personne utilisant une LFS qui envoie un patch aux mainteneurs, comme ça tout le monde en bénéficie...
> (et profiter de -fvisibility)
Yay, -O3 -march=xxx -mcpu=xxx est mort, long vie à -fvisibility, lanouvelle option de la mort qui tue qui fait aller un 486 à la vitesse d'un p4!!
[^]Re: À quand son utilisation partout ?
> J'aurais tendance à dire « vivement qu'*une* distrib utilise gcc 4, comme ça la plupart des applis compileront avec »
FC4 (sortie pour début juin) utilise gcc 4 par défaut. Je n'ai pas connaissance de paquet qui ne soit pas compilé avec gcc 4.0. Ça ne va pas sans effort, il y a quelques patchs pour corriger quelques applis.
[^]Re: À quand son utilisation partout ?
Actuellement, debian stable utilise gcc 2.95
comme dirait Keith Packard on dit pas "Debian Stable" mais "Debian Stale"
[^]Re: À quand son utilisation partout ?
> Mais d'ici là, comment feront ceux qui font une LFS et qui veulent
> compiler plus vite (et profiter de -fvisibility) ? Patcher tous les
> programmes pour ça est tout sauf marrant !
Quel est l'intérêt de recompiler son système parce qu'un nouveau gcc est sorti, déjà...
Mais quitte à gâcher du temps et de l'énergie, autant contribuer au libre et envoyer les corrections à ces gorets.
C'est ce que je fais pour Ubuntu. Les logs de compilation de dia me donnent encore froid dans le dos...
Groar !
[^]Re: À quand son utilisation partout ?
"Parce que trop d'applications ne compilent pas avec gcc4, et certaines ne passent même pas sur gcc3.4 ! "
Ah... alors je dois rever car mon system tourne tres bien... j'ai une gentoo mon compilo est un gcc3.4... et mon system fonctionne... de plus (mais la je ne parles pas en connaissance de cause) certaines personnes sont passé en GCC 4 et arrive à tout compiler (bon c'est vrai qui y'en a qui n'y arrivent pas ;)
Tu as une LFS et tu connais des deboir avec GCC3.4 pour dire ca ? (ton non agressif hein !)
[^]Re: À quand son utilisation partout ?
Alors, je ne fais que lister (sans retester) : la glib (version 1.2.10), monkey-bubble et SDL
Je sais c'est peu... Mais j'ai pas testé sur tous les paquets du monde !
[^]Re: À quand son utilisation partout ?
Oula, la glib 1.2.10 c'est pas gagné pour qu'elle soit corrigée... :-/
[^]Re: À quand son utilisation partout ?
Il fait quoi comme erreur avec Monkey Bubble ?
Etant le developpeur de monkey bubble, je peux peut etre fixer ça facilement.
[^]Re: À quand son utilisation partout ?
En tout cas il compile bien sur la Mandriva en gcc 3.4.3...
[^]Re: À quand son utilisation partout ?
Sous gentoo, mb-0.3.2 a un seul patch, destiné apparemment à l'amd64. Je te le pointe au cas où il ne t'aurait pas été remonté :
http://www.gentoo.org/cgi-bin/viewcvs.cgi/*checkout*/games-arcade/m(...)
(rapporté dans ce bug : https://bugs.gentoo.org/show_bug.cgi?id=59000(...) )
Par contre, aucun soucis à signaler avec gcc-3.4.3, c'est ce que j'utilise et je certifie avoir testé la chose pendant bien des heures :)
[^]Re: À quand son utilisation partout ?
Mea culpa, le fichier patch était mal nommé...
pouf pouf
[^]Re: À quand son utilisation partout ?
Mon système est basé sur une LFS, et tout ce petit monde est patché pour au moin gcc 3.4.3.
Il suffit de regarder sur BLFS (pour glib par exemple) ou chercher "ebuild package" sur Google (pour SDL par exemple), et d'aller dans le répertoire contenant les patches (files en général).
Les seuls packs que j'ai pas pu recompiler avec gcc 3.4.3, ce sont ceux de Gnomemm, surtout libglademm (le dernier 2.6.0). Je ne sais pas où est la régression, mais comme j'ai pas le temps pour ça ...
En revanche, avec GCC 4.0, c'est pire.
glib-1.2.10 compile sans souci, mais c'est pas le plus important.
Le pire, c'est que la glibc 2.3.5 vient de sortir, mais elle ne compile pas avec GCC 4.0. Les patches sont sortis (cf le site DIY Linux pour les hardcores comme moi pour qui LFS c'est un jeu pour enfants ;) ), mais je préfère attendre la sortie de glibc 2.3.6, qui va sortir, à ce que j'ai compris, rapidement, et exprès pour compiler avec gcc 4.0 !! Si c'est vrai, ça fera trois sorties de glibc très rapprochée, du jamais vu (surtout qu'avant, la 2.3.3 avait été sautée).
A mon avis, le -fvisibility ne sert que pour certaines biblio pour le desktop, pas besoin de tout recompiler !!
J'ai recompilé tout Gnome 2 avec. Pas trop difficile, le bug le plus courant est une déclaration en non statique, suivi d'une définition statique.
QT et KDE j'ai même pas essayé, car c'est vivement découragé partout (je vais essayer quand même tiens !).
Ce qui m'a fait le plus suer, c'est SDL, où il faut faire de sacrés modifs (parce que je ne maîtrise pas les alias de fonctions, celles-ci étant en assembleur ...).
J'ai fait tout ça car je voulais me préparer un bootcd pour mon Linux à moi, en gcc4, mais c'est pas pour demain, je vais rester en gcc 3.4.3 pour le bootcd pour l'instant.
[^]Re: À quand son utilisation partout ?
Je suis un fervent utilisateur de LFS/BLFS et je recompile (trop) souvent les OS de mes machines, surtout depuis que j'ai automatisé la chose. A ma connaissance, la seule application qui ne compile pas avec gcc 3.4 et qui n'a pas été patchée c'est openoffice.org 1.1.x, mais ça n'est pas bloquant puisqu'il suffit d'installer gcc 3.3 à coté du compilo principal pour avoir un OOo parfaitement fonctionnel.