J'ai trouvé ce question connexe.
En résumé, pour connaître les passes d'optimisation du compilateur :
llvm-as < /dev/null | opt -O3 -disable-output -debug-pass=Arguments
Comme indiqué dans Geoff Nixon Réponse de l'entreprise (+1), clang
exécute en outre quelques optimisations de plus haut niveau, que nous pouvons récupérer :
echo 'int;' | clang -xc -O3 - -o /dev/null -\#\#\#
La documentation relative aux laissez-passer individuels est disponible aquí .
Vous pouvez comparer l'effet de la modification d'indicateurs de haut niveau tels que -O
comme ça :
diff -wy --suppress-common-lines \
<(echo 'int;' | clang -xc - -o /dev/null -\#\#\# 2>&1 | tr " " "\n" | grep -v /tmp) \
<(echo 'int;' | clang -xc -O0 - -o /dev/null -\#\#\# 2>&1 | tr " " "\n" | grep -v /tmp)
# will tell you that -O0 is indeed the default.
Avec version 6.0 les passes sont les suivants :
Avec version 3.8 les passes sont les suivants :
----------
Avec version 3.7 les passes sont les suivantes (sortie analysée de la commande ci-dessus) :
----------
Para version 3.6 les passes sont comme documenté dans le post de GYUNGMIN KIM.
----------
Avec version 3.5 les passes sont les suivantes (sortie analysée de la commande ci-dessus) :
----------
Avec version 3.4 les passes sont les suivantes (sortie analysée de la commande ci-dessus) :
----------
Avec version 3.2 les passes sont les suivantes (sortie analysée de la commande ci-dessus) :
-------------
Modifier [mars 2014] Suppression des doublons dans les listes.
Modifier [avril 2014] ajout d'un lien vers la documentation + options pour 3.4
Modifier [septembre 2014] ajout d'options pour 3.5
Modifier [décembre 2015] ajout d'options pour la 3.7 et mention de la réponse existante pour la 3.6
Modifier [mai 2016] ajout d'options pour 3.8, à la fois pour opt et clang et mention de la réponse existante pour clang (versus opt)
Modifier [nov 2018] ajouter des options pour 6.0