Pollux a écrit :
> Je trouve le projet de GTC très interessant mais le top serait de réunir TIGCC et GTC pour faire un compilateur de tonnerre avec des fonctions avancés...
C'est extrêmement difficile. GTC et TIGCC fonctionnent très différemment
Et voilà. J'espère que ceux comme Thibaut qui ne me croient pas à moi te croieront à toi au moins.
> Sur GTC, la vitesse de compilation est peut-être plus élevée (on verra les benchs...)
Tu peux dire "certainement"...
GCC est connu pour être lent en effet.

Mais c'est le prix des optimisations élaborées.
> mais est-ce que ces arguments tiennent vraiment debout (à moins d'être sur des PC totalement dépassés depuis au moins 4 ans) ?
La vitesse de compilation est utile pour le débogage, après rien n'interdit de finaliser avec TI-GCC. Mais par contre la taille on s'en fout effectivement 
Tu t'en fous, toi? Nous, on compile
TIGCC avec
-Os...
Et je le répète, GTC n'est pas principalement destiné à être on-PC.
Répète-le plus fort pour que Thibaut comprenne.
GTC n'est pas du "tout en une passe"
GTC utilise des arbres pour se réprésenter les expressions et les structures de contrôle, puis fait tout un tas d'optimisations sur les arbres (ça fait plein de passes
), génère un code intermédiaire à partir de ces arbres, puis génère de l'ASM à partir de ce code un intermédiaire.
Ah bon? Désolé.

Je n'avais pas cette impression d'après tes descriptions vagues du fonctionnement.
GCC fonctionne aussi plus ou moins comme ça (mais la plupart des optimisations sont faites sur la "représentation intermédiaire", pas sur les arbres; ça va probablement changer avec les versions futures, cf.
http://gcc.gnu.org/projects/tree-ssa/).
Et tu as l'air de dire que "plus il y a de passes, mieux c'est" - mais il n'y a pas que le nombre de passes, il y a aussi la qualité des algos.
Évidemment. Mais le nombre de passes est quand-même un facteur important.
> création d'un format de .tpr commun pour améliorer la portabilité (je dirais que c'est à Pollux de s'aligner sur votre format)
Bonne idée 
Oui, parce que la limitation à un seul fichier .c à la fois, c'est quand-même assez contraignant.
> On lui en fait depuis des mois, des suggestions. Mais il ne les écoute pas. Ça fait longtemps que je lui dis:
> * d'arrêter de rajouter des extensions de langage à GTC qu'il pense lui-même être inimplémentables dans GCC (et de retirer celles qui y sont déjà)
Ces extensions sont présentes depuis pas mal de temps.
Vive l'implémentation d'extensions en secret...

(C'est ironique, évidemment.

)
Par contre, #macro et le changement au cours d'un fichier des options de compilations sont vraiment utiles et sont à mon avis parfaitement implémentables dans TI-GCC (même si je ne connais pas vraiment les détails de la structure interne de GCC).
"Tu m'énerves, Pollux, à tjs vouloir parler de ce que tu ne sais pas!"
Mais je dois avouer que moi non plus, je ne peux pas dire si facilement de manière définitive si c'est implémentable facilement ou non.
GCC est très complexe et je ne m'y retrouve toujours pas parfaitement.
J'ajoute que le changement d'options de compilation ne constitue pas une incompatibilité puisqu'on peut très bien faire en sorte que TIGCC les ignore.
Sauf si ça donne du mauvais code quand on l'ignore. Par exemple changement du nombre de registres du passage par registres.
#macro permet, entre autres, d'éviter plein de hacks sales.
Mais c'est difficile à implémenter sans mettre un autre préprocesseur par dessus celui de
GCC.
> de passer le temps qu'il passe à rajouter ces extensions à implémenter les fonctionnalités de TIGCC qui manquent à GTC
> mais il s'en fiche.
Je ne m'en fiche pas. Je fais tout ce qui est en mon pouvoir pour avoir un compilo rapide et léger qui puisse fonctionner sur calculatrice, tout en maintenant une bonne compatibilité avec TIGCC. Je suis désolé, mais certaines extensions de TIGCC ne seront jamais dans GTC (à moins que les TI passent à 1 Mo de RAM et un 68k à 30 MHz
)
Même pas si quelqu'un les implémente pour toi?
> Nous avons toujours documenté toutes nos extensions de langage. Pollux, lui, m'a pondu une liste largement incomplète à ma demande explicite il y a quelques jours.
Je n'ai pas eu le temps de rédiger une doc complète 
Ça aurait dû être fait depuis longtemps.

Quand on rajoute une extension, on la documente!
Pour ce qui est des extensions de langage, je ne trouve pas la doc du 'register var asm("rn")' dans TI-GCC.
http://tigcc.ticalc.org/doc/gnuexts.html#SEC99a
(C'est sous "GNU C Language Extensions" / "Variables in Specified Registers" / "Specifying Registers for Function Parameters".)
De même, je ne vois nulle part à quels registres sont affectées les variables pour __regparm__ (mais j'ai peut-être mal cherché...)
Les registres de données dans l'ordre pour les données, les registres d'adresses dans l'ordre pour les pointeurs.
C'est un peu logique, mais tu as raison que je devrais rajouter ça à la documentation.
> Je vous laisse imaginer ce que ça va donner si on implémente ces extensions stupides élaborées en secret par Pollux sans jamais discuter de la faisabilité pour d'autres compilateurs avec les mainteneurs de ces autres compilateurs.
Tu crois sincèrement que le préprocesseur de GCC va évoluer fondamentalement?
Oui! Il évolue constamment! Par exemple:
*
GCC 3.1 a modifié la manière de laquelle le préprocesseur "revient en arrière" dans certaines situations. J'ai été obligé de réécrire complètement notre code pour
SYMSTR.
*
cpp1.exe a été intégré à
cc1.exe dans
GCC 3.3
*
GCC 3.4 rajoutera le support pour les headers précompilés, donc encore des changements énormes au préprocesseurs. Une partie de ces changements a déjà été rajoutée à
GCC 3.3, mais beaucoup ont été rajoutés seulement pour
GCC 3.4.
#macro ne demande a priori que des légères modifications dans le préprocesseur.
Je veux voir le patch alors.
