IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

option -O de gcc


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Par défaut option -O de gcc
    Bonjour,

    une simple question :

    lorsque je compile un programme avec gcc et l'option -O3 (sensée optimiser) j'ai une erreur de segmentation que je ne rencontre pas avec -O1 ou même sans cette option.

    Est-ce "normal" ou est ce que mon prog cache une erreure non détectée lors de la compilation.

    Et si c'est ce dernier cas, avez vous une idée du genre d'erreur qui peut en etre la cause?

    Merci bien,

    Yan

  2. #2
    Membre très actif

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Par défaut
    salut

    il parait que parfois -O3 provoque des erreurs, et apparemment (presque) personne ne compile les noyaux de linux avec -O3

    mais a priori ça cache un bug! (dépassement de chaine de caractère au hasard ?)

    si tu mets le code ça peut aussi aider d'une manière générale

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour les erreurs de -O3, je vois trois sources possibles:
    • Comportement indéfini qui passe en dans les niveaux inférieurs (-O0, -O1, -O2) mais qui casse en -O3
    • Code ne prenant pas en compte les contraintes supplémentaires de -O3 (notamment des trucs comme le "assume no aliasing" qui peuvent faire très mal).
    • Bug de gcc.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Par défaut
    ok donc faiblesses du code qu'on peut casiment considérer comme légitimes.
    Je vais m'en tenir à du O1 même si ça semble pas changer grand chose (par contre O3 c'est sensible).
    Désolé pour le code mais il fait 1000 lignes environs et utilise une bibliothèque que je parie que vous la connaissez pas (Acnuc).

    Merci beaucoup messieurs,

    Yan

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu devrais essayer en -O2. Non seulement c'est plus "safe" que -O3, mais certains warnings, même activés, n'apparaissent qu'à partir de -O2...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Par défaut
    oui he bien là ça pèche, c'est qu'en 02 aussi j'ai un segmentation fault. Vous allez me dire que les erreures doivent-être plus grossière et du coup si vous voulez voir mon code : !!
    Et sinon j'ai aucuns warning à la compilation, même en O3 (mais je n'utilise pas l'option -w)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. option -DOS de gcc
    Par Invité dans le forum C++
    Réponses: 3
    Dernier message: 21/09/2009, 20h55
  2. Option linker pthread gcc
    Par Nykoo dans le forum C
    Réponses: 30
    Dernier message: 17/01/2008, 12h17
  3. Options de compilation GCC
    Par oranoutan dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 14/07/2007, 04h10
  4. Option de compilation gcc : sem.h
    Par Luther13 dans le forum Linux
    Réponses: 8
    Dernier message: 29/12/2004, 12h29
  5. Problème avec l'option -static de gcc
    Par lsdInside dans le forum Linux
    Réponses: 2
    Dernier message: 08/05/2004, 01h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo