Billy Charvet :
Kevin >
Dans l'IDE, c'est une case à décocher. En ligne de commande, ce n'est pas par défaut.
Faudrait que la case soit décochée par défaut. Il ne faut pas que des switch
du linker servent à empêcher une optimisation, c'est le contraire...
C'est la philosophie de la ligne de commande, mais l'IDE fonctionne autrement: les options par défaut dans l'IDE activent des optimisations, ça a toujours été comme ça (par exemple,
-Os est mis par défaut depuis des lustres, et avant, c'était
-O2) et ça ne changera pas. Les options par défaut de l'IDE donnent du bon code sans devoir se soucier des détails d'implémentation. (Le problème en question sera corrigé,
--remove-unused ne devrait pas démolir les librairies kernel en effet.)
nitro
:
Kevin Kofler :
Franchement, j'en ai marre. Toutes les plaintes au sujet de ld-tigcc sont de la part de programmeurs assembleur [...] qui n'ont visiblement pas lu la documentation
Je cite la documentation (http://tigcc.ticalc.org/doc/gnuasm.html):
However, please make sure that you put a .data directive at
the beginning of each assembly source file.
et toi, tu dis :
1. section ".data" -> obsolète, à virer. Correctif: virer.
Oups... On a oublié de virer ça alors. C'est une erreur, je vais corriger ça.
Uther
:
Entièrement d'accord: un assembleur n'est pas sensé optimisér; s'il obtimise pourquoi pas a condition que ce ne soit pas par défaut.
A68k a toujours optimisé par défaut (désactivable avec
-n).
Quant au linker ce n'est absolument pas son rôle de faire des optimisations.
Raaaahhhh!!! Arrrrghhhhh!!! J'ai
marre de lire et relire ce commentaire naïf et mal informé! Et j'ai marre aussi du fait que toi, Uther, tu mets toujours trop long à comprendre...
Je répète pour la 36000
ème fois:
Ce que le linker optimise, ce sont des optimisations qui sont I_M_P_O_S_S_I_B_L_E_S à faire dans l'assembleur! IMPOSSIBLES. IMPOSSIBLES. IMPOSSIBLES. Comment veux-tu que l'assembleur sache si un label est à moins de 32 KO ou à moins de 128 octets s'il est dans un AUTRE fichier objet qui est assemblé de manière totalement séparé??? Et de plus, le linker peut réordonner les sections pour permettre d'optimiser des références. L'assembleur ne peut pas connaître l'ordre des sections quand il ne compile qu'une partie du programme.
Il faut vraiment vous sortir de la tête l'idée obsolète qu'un fichier
.asm (avec éventuellement des
include "toto.asm" 
) correspond à un programme! En réalité, un fichier
.asm n'est en général qu'une
partie du programme, et donc l'assembleur
ne connaît pas le programme entier. Donc il ne peut pas optimiser des trucs qui nécessitent la connaissance du programme entier.