8 votes

Problème de désactivation des optimisations LLVM via pragma

J'ai un morceau de code qui plante si je ne construis pas avec les optimisations désactivées. Je construis avec le compilateur LLVM 2.0.

J'aimerais désactiver les optimisations en enveloppant le code incriminé d'une directive #pragma du compilateur ; ou désactiver les optimisations pour un fichier entier.

J'ai fouillé dans le manuel et le code de Clang, mais rien ne me saute aux yeux.

Quelqu'un sait-il comment modifier les optimisations pour une seule unité centrale (et non pour l'ensemble de l'application) ?

15voto

Brad Larson Points 122629

Vous pouvez définir des drapeaux de compilation par fichier dans Xcode. Dans Xcode 4 (que je suppose que vous utilisez en raison de la référence à LLVM 2.0), sélectionnez d'abord le projet dans le navigateur de gauche. Allez dans l'onglet Build Phases (Phases de construction) et développez la phase de construction Compile Sources (Compiler les sources).

Vous pouvez y définir des drapeaux de compilation par fichier, vous pouvez donc essayer d'aller dans le fichier incriminé et de saisir -O0 pour essayer de désactiver les optimisations pour ce seul fichier.

GCC dispose de certains attributs que vous pouvez définir pour cela, comme l'a souligné Johannes dans sa réponse ici mais il se peut qu'elles ne soient pas présentes dans LLVM. De plus, d'après les commentaires, il semble que ces éléments ne soient même pas présents dans le GCC personnalisé d'Apple utilisé pour la création d'applications iOS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X