Nous rencontrons bad code generation pour un fichier source utilisant IBM XL C/C++ à -O3
sur les plates-formes PowerPC. Ses surfaces se bloquent et il semble qu'une boucle particulière ne soit pas cassée.IBM XL C/C++ équivalent à #pragma GCC optimiser
Le problème ne survient que sous XL C/C++. Notre régime de test indique que le fichier source est dépourvu de comportement indéfini, d'erreurs de mémoire et d'autres errata. Nous ne recevons pas non plus les avertissements strict/nostrict du compilateur pour le fichier source. Nous voulons compiler le fichier source à -O2
au lieu de -O3
. Nous voulons ajouter des instruments, comme un pragma, au fichier source afin qu'il puisse être surveillé de manière appropriée pour le compilateur. L'instrumentation permet à d'autres de se connecter à d'autres systèmes de construction comme Cmake et Autotools et les choses vont «fonctionner» pour eux. (Les informations nécessaires sont disponibles dans la source et non dans notre makefile).
Le manuel IBM pour le compilateur est situé à IBM XL C/C++ for AIX, V13.1, mais bon sang si je peux trouver l'option.
Quel est l'équivalent d'IBM XL C/C++ à #pragma GCC optimize
? Comment pouvons-nous instrumenter le code source pour indiquer à XL C/C++ d'utiliser -O2
au lieu de -O3
?
Merci @trudeaun. Je pense que vous avez raison sur le diagnostic du compilateur. Cela ressemble à un message GCC. En ce qui concerne «-O2», nous avons trouvé la plaie. Il a été autorisé à [numéro 503] (https://github.com/weidai11/cryptopp/issues/503). Je suppose que c'est la règle * "As If" * règle C++ - les rédacteurs de compilateur sont autorisés à transformer un programme en fonctionnement en un non-fonctionnement :) – jww
En ce qui concerne Stack Overflow par rapport aux forums IBM, merci de surveiller. Je n'ai pas de compte de discussion et je ne vais pas rejoindre un autre réseau social, donc je ne peux pas utiliser le lieu. Ce serait bien si IBM acceptait Google, Facebook, etc. Mais je comprends que la plupart des entreprises veulent être le fournisseur de services pour collecter l'information; et ils ne veulent pas être la partie de confiance qui doit abandonner l'information. – jww
Merci encore @trudeaun. Je vois ce qui s'est passé avec la référence manuelle. Les informations que vous avez indiquées sont dans le manuel. Cependant, je l'ai travaillé à partir de l'autre extrémité: j'ai trouvé 'option_override' dans le manuel de la page 441, puis je suis allé chercher des options d'optimisation autour des pages 441-445. Le problème est: "opt (level, 2)" n'est pas abordé dans cette partie du manuel. D'autres optimisations sont, comme 'unroll' et' nounroll', mais pas '" opt (niveau, 2) "'. Je suppose que j'apprends encore à utiliser le manuel. – jww