2010-01-29 2 views
6

Les anciennes versions de gcc (par exemple 4.0.2 ou 4.1.2) avaient l'option -df (voir http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Debugging-Options.html#index-fdump_002drtl_002dcfg-357). J'ai utilisé cette option pour vider les fichiers filename.c.134r.life2 et filename.c.126r.life1, parce que je veux extraire certaines valeurs de ces fichiers (par exemple le nombre de registres pour chaque méthode).J'ai besoin d'une option de vidage d'arbre, qui n'existe plus dans les versions actuelles de gcc.

Le problème est que dans les versions actuelles de gcc (par exemple 4.2.2) cette option n'existe plus. Il existe d'autres options et le vidage d'arborescence avec le nom filename.c.135r.jump est à peu près la même chose. Mais le compte de registre est manquant dans cette image, et je n'ai pas pu trouver une image qui a ces valeurs.

Y at-il encore un paramètre, ce qui me donne les anciens dumps dans les versions actuelles de gcc?

+0

L'équipe de GCC fait de telles choses. J'avais l'habitude d'utiliser l'option '-fdump-tree-fixupcfg-lineno' dans 4.2, mais elle est partie dans 4.4 :( – qrdl

+0

Merci pour la bonne question! Maintenant j'en connais un peu plus sur gcc et ses options de vidage. étudier les sources est le meilleur – osgx

Répondre

2

Gcc 4.2-4.3 a vraiment la fonction dump_flow_info, qui indique le nombre de registre utilisé. Je vais chercher, comment il peut être appelé.

Oh, oui:

gcc-4.3.1 file.c -fdump-rtl-all-all 

produit

file.c.175r.lreg 

avec

file.c.175r.lreg:81 registers. 

option Plus spécifique: -fdump-rtl-lreg-all. Testé avec 4.3

+0

dump_flow_info ... dump_options "details", TDF_DETAILS – osgx

+1

Pour tout gcc, vous pouvez essayer de trouver l'option par '-fdump-rtl-all-all' et' -fdump-tree-all-all' puis les registres "grep". " file.c. * 'pour trouver la phase. – osgx

+0

Et pour les nouveaux gcc, l'ensemble est '-fdump-rtl-tout-tout -fdump-tree-all-all -fdump-ipa-all-all'. – osgx

0

Citant la page que vous avez donné:

[the dump options are] used for debugging the RTL-based passes of the compiler. 

Vous devriez enquêter sur leur nouveau plug-in infrastructure, en fonction de ce que vous essayez d'atteindre, vous seriez en position bien meilleure que l'analyse syntaxique journal de débogage ne vise pas à vous apporter l'information que vous voulez.

+3

Les plugins sont disponibles uniquement dans GCC 4.5, qui n'est pas encore GA – qrdl

+0

@qrdl: Je n'ai jamais vu le terme "disponibilité générale" appliqué à GCC, qui est non commercial avec un développement ouvert. – ephemient

+0

@ephemient Je vois ce que vous voulez dire Point valide Par GA, je voulais dire la version stable officielle Selon la page d'accueil de GCC, la dernière version stable (ou la version actuelle, comme ils l'appellent) est 4.4.3, bien que 4.5.0 avec – qrdl

Questions connexes