Forum Astuces.divers [Développement] Perdu dans les drapeaux d'optimisation de GCC?

Posté par .
Tags : aucun
1
2
mai
2006
"gcc -v -Q" vous permettra d'y voir plus clair.


Mise à jour : comme indiqué en commentaire, la commande "gcc -v -Q" ne retourne pas les drapeaux d'optimisation de GCC mais les options indiquées lors de la compilation de GCC.



Mise à jour 2 :


$ cat foobar.c
int main() {
}
$ gcc -v -Q foobar.c
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk-default --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.3 (Debian 4.0.3-1)
/usr/lib/gcc/i486-linux-gnu/4.0.3/cc1 -v foobar.c -dumpbase foobar.c -mtune=i686 -auxbase foobar -version -o /tmp/cc6Jqxqh.s
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/i486-linux-gnu/4.0.3/include
/usr/include
End of search list.
GNU C version 4.0.3 (Debian 4.0.3-1) (i486-linux-gnu)
compiled by GNU C version 4.0.3 (Debian 4.0.3-1).
GGC heuristics: --param ggc-min-expand=81 --param ggc-min-heapsize=97053
options passed: -v -mtune=i686 -auxbase
options enabled: -falign-loops -fargument-alias -fbranch-count-reg
-fcommon -feliminate-unused-debug-types -ffunction-cse -fgcse-lm -fident
-finline-functions-called-once -fivopts -fkeep-static-consts
-fleading-underscore -floop-optimize2 -fmath-errno -fpcc-struct-return
-fpeephole -fsched-interblock -fsched-spec -fsched-stalled-insns-dep
-fsplit-ivs-in-unroller -ftrapping-math -ftree-loop-im -ftree-loop-ivcanon
-ftree-loop-optimize -fvar-tracking -fzero-initialized-in-bss -m80387
-mhard-float -mno-soft-float -mieee-fp -mfp-ret-in-387
-maccumulate-outgoing-args -mno-red-zone -mtls-direct-seg-refs -mtune=i686
-march=i486
main

Execution times (seconds)
parser : 0.02 (33%) usr 0.00 ( 0%) sys 0.02 (33%) wall
TOTAL : 0.06 0.01 0.06
as -V -Qy --32 -o /tmp/ccays8Ut.o /tmp/cc6Jqxqh.s
GNU assembler version 2.16.91 (i486-linux-gnu) using BFD version 2.16.91 20060118 Debian GNU/Linux
/usr/lib/gcc/i486-linux-gnu/4.0.3/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib/crt1.o /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.0.3/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.0.3 -L/usr/lib/gcc/i486-linux-gnu/4.0.3 -L/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib -L/usr/lib/gcc/i486-linux-gnu/4.0.3/../../.. -L/lib/../lib -L/usr/lib/../lib /tmp/ccays8Ut.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i486-linux-gnu/4.0.3/crtend.o /usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib/crtn.o

  • # Ah ?

    Posté par (page perso) . Évalué à 4.

    Tu peux détailler ?
    $ gcc -v -Q
    Using built-in specs.
    Target: i586-mandriva-linux-gnu
    Configured with: ../configure --prefix=/usr --libexecdir=/usr/lib --with-slibdir=/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --enable-languages=c,c++,ada,f95,objc,java --host=i586-mandriva-linux-gnu --with-system-zlib --enable-long-long --enable-__cxa_atexit --enable-clocale=gnu --disable-libunwind-exceptions --enable-java-awt=gtk --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --enable-gtk-cairo
    Thread model: posix
    gcc version 4.0.2 (4.0.2-1mdk for Mandriva Linux release 2006.1)

    Ca m'avance vachement...
    • [^] # Re: Ah ?

      Posté par . Évalué à 1.

      ;) plus clair, plus clair... tout est relatif :)
  • # Faux !

    Posté par . Évalué à 5.

    la commande "gcc -v -Q" ne retourne pas les drapeaux d'optimisation de GCC mais les OPTIONS de COMPILATIONS de GCC, on y apprend par exemple que :

    --enable-languages=c,c++,java,f95,objc,ada,treelang

    les langages reconnus par gcc

    Pour les drapeaux d'optimisation, il faut plutôt aller visiter le site suivant :

    http://www.linuxjournal.com/article/7269
    • [^] # Re: Faux !

      Posté par (page perso) . Évalué à 1.

      De plus, -Q n'apporte rien dans ce cas.
      -Q Makes the compiler print out each function name as it is compiled, and print some statistics about each pass when it finishes.
      Donc -Q a priori c'est utile que pour les développeurs de GCC qui veulent l'optimiser et si GCC ne compile rien, -Q n'aura aucun effet.

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Euh...

    Posté par . Évalué à 1.

    Il faut compiler quelque chose pour que les options d'optimistations s'affichent.
    "gcc -v -Q" tout seul ne vous donnera *presque* rien...

    Essayez plutôt ça:
    cat >test.c <<EOF
    #include <stdio.h>
    int main ()
    {
    printf ("Hello World!");
    return 0;
    }
    EOF

    Ensuite faite "gcc -v -Q test.c"

    Testé avec Debian Ubuntu Breezy powerpc gcc 4.0.2.
  • # retours d'utilisateurs sur les cflags

    Posté par . Évalué à 0.

    il y a des retours d'utilisateurs sur les cflags sur le gentoo wiki:
    http://gentoo-wiki.com/CFLAGS_matrix

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.