Dans l'article ,
Kojak écrit:
> Le Thu, 26 Mar 2009 17:51:22 +0000 (UTC),
> Vincent Lefevre a écrit :
> > Attention, il faut alors stocker tous les résultats intermé diaires
> > dans des variables temporaires, e.g.
> Tout à fait.
En fait, j'ai vérifié tout à l'heure (pas sur ce code, mai s sur un
autre code très simple, indépendamment de cette enfilade): cela est
nécessaire avec un gcc 3.4, mais avec un gcc 4.1, les variables
temporaires n'étaient pas nécessaires, i.e. avec -ffloat-store, seul
gcc 3.4 sans variables temporaires pour les résultats intermédi aires
ne donnait pas le résultat voulu. Cependant, la page man de gcc 4.1
[...]
Dans l'article <20090327061906.6931aade@thor.janville.org>,
Kojak <nntpspy@janville.borg.invalid> écrit:
> Le Thu, 26 Mar 2009 17:51:22 +0000 (UTC),
> Vincent Lefevre a écrit :
> > Attention, il faut alors stocker tous les résultats intermé diaires
> > dans des variables temporaires, e.g.
> Tout à fait.
En fait, j'ai vérifié tout à l'heure (pas sur ce code, mai s sur un
autre code très simple, indépendamment de cette enfilade): cela est
nécessaire avec un gcc 3.4, mais avec un gcc 4.1, les variables
temporaires n'étaient pas nécessaires, i.e. avec -ffloat-store, seul
gcc 3.4 sans variables temporaires pour les résultats intermédi aires
ne donnait pas le résultat voulu. Cependant, la page man de gcc 4.1
[...]
Dans l'article ,
Kojak écrit:
> Le Thu, 26 Mar 2009 17:51:22 +0000 (UTC),
> Vincent Lefevre a écrit :
> > Attention, il faut alors stocker tous les résultats intermé diaires
> > dans des variables temporaires, e.g.
> Tout à fait.
En fait, j'ai vérifié tout à l'heure (pas sur ce code, mai s sur un
autre code très simple, indépendamment de cette enfilade): cela est
nécessaire avec un gcc 3.4, mais avec un gcc 4.1, les variables
temporaires n'étaient pas nécessaires, i.e. avec -ffloat-store, seul
gcc 3.4 sans variables temporaires pour les résultats intermédi aires
ne donnait pas le résultat voulu. Cependant, la page man de gcc 4.1
[...]
Le Fri, 27 Mar 2009 13:54:16 +0000 (UTC),
Vincent Lefevre a écrit :
> En fait, j'ai vérifié tout à l'heure (pas sur ce code, mais sur un
> autre code très simple, indépendamment de cette enfilade): cela est
> nécessaire avec un gcc 3.4, mais avec un gcc 4.1, les variables
> temporaires n'étaient pas nécessaires, i.e. avec -ffloat-store, seul
> gcc 3.4 sans variables temporaires pour les résultats intermédiaires
> ne donnait pas le résultat voulu. Cependant, la page man de gcc 4.1
> [...]
Sur x86 ?
et avec '-ffloat-store' :
Les flottants c'est tabou = 1000.000000
On en viendra tous à bout = 1000.000000
Le Fri, 27 Mar 2009 13:54:16 +0000 (UTC),
Vincent Lefevre a écrit :
> En fait, j'ai vérifié tout à l'heure (pas sur ce code, mais sur un
> autre code très simple, indépendamment de cette enfilade): cela est
> nécessaire avec un gcc 3.4, mais avec un gcc 4.1, les variables
> temporaires n'étaient pas nécessaires, i.e. avec -ffloat-store, seul
> gcc 3.4 sans variables temporaires pour les résultats intermédiaires
> ne donnait pas le résultat voulu. Cependant, la page man de gcc 4.1
> [...]
Sur x86 ?
et avec '-ffloat-store' :
Les flottants c'est tabou = 1000.000000
On en viendra tous à bout = 1000.000000
Le Fri, 27 Mar 2009 13:54:16 +0000 (UTC),
Vincent Lefevre a écrit :
> En fait, j'ai vérifié tout à l'heure (pas sur ce code, mais sur un
> autre code très simple, indépendamment de cette enfilade): cela est
> nécessaire avec un gcc 3.4, mais avec un gcc 4.1, les variables
> temporaires n'étaient pas nécessaires, i.e. avec -ffloat-store, seul
> gcc 3.4 sans variables temporaires pour les résultats intermédiaires
> ne donnait pas le résultat voulu. Cependant, la page man de gcc 4.1
> [...]
Sur x86 ?
et avec '-ffloat-store' :
Les flottants c'est tabou = 1000.000000
On en viendra tous à bout = 1000.000000
Le 27/03/2009 15:53Z, Marc Boyer écrivit :Et oui, l'incompétence...
[...]autant écrire du C et le compiler avec un compilo C++ montre
une incompétence importante.
Es-tu sûr ? Ai-je bien compris ta remarque ?
Je suis totalement incompétent en C++, domaine où je me borne à essayer
de comprendre petit à petit le bouquin^W pavé de Stroustrup, mais
d'après ce dernier cette démarche n'est pas aussi stupide que cela, un
des objectifs importants de C++ étant justement de pouvoir récupérer le
code C existant, il en découle donc que du code C « raisonnable » doit
pouvoir être recompilé en C++ sans quasiment aucun changement.
Bien évidemment, c'est complètement différent de la démarche qui
consisterait à franchir le 49e parallèle (ou l'Atlantique) et écrire
tout en C++, mais on en est pas là dans le cas de Pierre (je pense qu'un
driver Windows peut difficilement être écrit en C++, cela demanderait
une infrastructure importante).
Aussi si utiliser un compilo C++ sur du code C me paraît raisonnable, le
contraire, c'est-à-dire manipuler des choses C++ dans un environnement
C, me paraît [censuré].
Le 27/03/2009 15:53Z, Marc Boyer écrivit :
Et oui, l'incompétence...
[...]
autant écrire du C et le compiler avec un compilo C++ montre
une incompétence importante.
Es-tu sûr ? Ai-je bien compris ta remarque ?
Je suis totalement incompétent en C++, domaine où je me borne à essayer
de comprendre petit à petit le bouquin^W pavé de Stroustrup, mais
d'après ce dernier cette démarche n'est pas aussi stupide que cela, un
des objectifs importants de C++ étant justement de pouvoir récupérer le
code C existant, il en découle donc que du code C « raisonnable » doit
pouvoir être recompilé en C++ sans quasiment aucun changement.
Bien évidemment, c'est complètement différent de la démarche qui
consisterait à franchir le 49e parallèle (ou l'Atlantique) et écrire
tout en C++, mais on en est pas là dans le cas de Pierre (je pense qu'un
driver Windows peut difficilement être écrit en C++, cela demanderait
une infrastructure importante).
Aussi si utiliser un compilo C++ sur du code C me paraît raisonnable, le
contraire, c'est-à-dire manipuler des choses C++ dans un environnement
C, me paraît [censuré].
Le 27/03/2009 15:53Z, Marc Boyer écrivit :Et oui, l'incompétence...
[...]autant écrire du C et le compiler avec un compilo C++ montre
une incompétence importante.
Es-tu sûr ? Ai-je bien compris ta remarque ?
Je suis totalement incompétent en C++, domaine où je me borne à essayer
de comprendre petit à petit le bouquin^W pavé de Stroustrup, mais
d'après ce dernier cette démarche n'est pas aussi stupide que cela, un
des objectifs importants de C++ étant justement de pouvoir récupérer le
code C existant, il en découle donc que du code C « raisonnable » doit
pouvoir être recompilé en C++ sans quasiment aucun changement.
Bien évidemment, c'est complètement différent de la démarche qui
consisterait à franchir le 49e parallèle (ou l'Atlantique) et écrire
tout en C++, mais on en est pas là dans le cas de Pierre (je pense qu'un
driver Windows peut difficilement être écrit en C++, cela demanderait
une infrastructure importante).
Aussi si utiliser un compilo C++ sur du code C me paraît raisonnable, le
contraire, c'est-à-dire manipuler des choses C++ dans un environnement
C, me paraît [censuré].
ble:~> gcc-3.3 -W -Wall -m32 -ffloat-store -o peekaboo_store
peekaboo.c ble:~> ./peekaboo_store
Les flottants c'est tabou = 999.999939
On en viendra tous à bout = 1000.000000
ble:~> gcc-3.4 -W -Wall -m32 -ffloat-store -o peekaboo_store
peekaboo.c ble:~> ./peekaboo_store
Les flottants c'est tabou = 999.999939
On en viendra tous à bout = 1000.000000
Ce sont les paquets Debian gcc-3.3 1:3.3.6-15 et gcc-3.4 3.4.6-5
respectivement.
ble:~> gcc-3.3 -W -Wall -m32 -ffloat-store -o peekaboo_store
peekaboo.c ble:~> ./peekaboo_store
Les flottants c'est tabou = 999.999939
On en viendra tous à bout = 1000.000000
ble:~> gcc-3.4 -W -Wall -m32 -ffloat-store -o peekaboo_store
peekaboo.c ble:~> ./peekaboo_store
Les flottants c'est tabou = 999.999939
On en viendra tous à bout = 1000.000000
Ce sont les paquets Debian gcc-3.3 1:3.3.6-15 et gcc-3.4 3.4.6-5
respectivement.
ble:~> gcc-3.3 -W -Wall -m32 -ffloat-store -o peekaboo_store
peekaboo.c ble:~> ./peekaboo_store
Les flottants c'est tabou = 999.999939
On en viendra tous à bout = 1000.000000
ble:~> gcc-3.4 -W -Wall -m32 -ffloat-store -o peekaboo_store
peekaboo.c ble:~> ./peekaboo_store
Les flottants c'est tabou = 999.999939
On en viendra tous à bout = 1000.000000
Ce sont les paquets Debian gcc-3.3 1:3.3.6-15 et gcc-3.4 3.4.6-5
respectivement.
Bon, j'ai installé et vérifié avec la version 3.4.6 et, après moult
investigations, il appert que l'option -ffloat-store ne sert à rien !
On obtient strictement le même code avec ou sans l'option. Bref, cette
version du compilateur est vermoulue.
Bon, j'ai installé et vérifié avec la version 3.4.6 et, après moult
investigations, il appert que l'option -ffloat-store ne sert à rien !
On obtient strictement le même code avec ou sans l'option. Bref, cette
version du compilateur est vermoulue.
Bon, j'ai installé et vérifié avec la version 3.4.6 et, après moult
investigations, il appert que l'option -ffloat-store ne sert à rien !
On obtient strictement le même code avec ou sans l'option. Bref, cette
version du compilateur est vermoulue.
Tu peux voir
http://gcc.gnu.org/bugzilla/show_bug.cgi?id23
Tu peux voir
http://gcc.gnu.org/bugzilla/show_bug.cgi?id23
Tu peux voir
http://gcc.gnu.org/bugzilla/show_bug.cgi?id23
Dans l'article ,
Kojak écrit:
> Bon, j'ai installé et vérifié avec la version 3.4.6 et, après moult
> investigations, il appert que l'option -ffloat-store ne sert Ã
> rien ! On obtient strictement le même code avec ou sans l'option.
> Bref, cette version du compilateur est vermoulue.
Essaie d'ajouter l'option -mfpmath87 (ton compilo compile peut-ê tre
en SSE2 par défaut).
Dans l'article <20090330114449.49087041@thor.janville.org>,
Kojak <nntpspy@janville.borg.invalid> écrit:
> Bon, j'ai installé et vérifié avec la version 3.4.6 et, après moult
> investigations, il appert que l'option -ffloat-store ne sert Ã
> rien ! On obtient strictement le même code avec ou sans l'option.
> Bref, cette version du compilateur est vermoulue.
Essaie d'ajouter l'option -mfpmath=387 (ton compilo compile peut-ê tre
en SSE2 par défaut).
Dans l'article ,
Kojak écrit:
> Bon, j'ai installé et vérifié avec la version 3.4.6 et, après moult
> investigations, il appert que l'option -ffloat-store ne sert Ã
> rien ! On obtient strictement le même code avec ou sans l'option.
> Bref, cette version du compilateur est vermoulue.
Essaie d'ajouter l'option -mfpmath87 (ton compilo compile peut-ê tre
en SSE2 par défaut).
Il existe un certain nombre d'incohérences entre C et C++, je ne me
souviens pas de toutes.
Il existe un certain nombre d'incohérences entre C et C++, je ne me
souviens pas de toutes.
Il existe un certain nombre d'incohérences entre C et C++, je ne me
souviens pas de toutes.
On 2009-03-27, Antoine Leca wrote:Le 27/03/2009 15:53Z, Marc Boyer écrivit :autant écrire du C et le compiler avec un compilo C++ montre
une incompétence importante.
des objectifs importants de C++ étant justement de pouvoir récupérer le
code C existant, il en découle donc que du code C « raisonnable » doit
pouvoir être recompilé en C++ sans quasiment aucun changement.
C'est tout le problème de "raisonnable" et du "quasiment".
Il existe un certain nombre d'incohérences entre C et C++, je ne me souviens
pas de toutes. sizeof('a') en est une.
Rien que de petites subtilités, qui si elles donnent lieu à bug,
doivent être super amusantes à aller dénicher.
On 2009-03-27, Antoine Leca <root@localhost.invalid> wrote:
Le 27/03/2009 15:53Z, Marc Boyer écrivit :
autant écrire du C et le compiler avec un compilo C++ montre
une incompétence importante.
des objectifs importants de C++ étant justement de pouvoir récupérer le
code C existant, il en découle donc que du code C « raisonnable » doit
pouvoir être recompilé en C++ sans quasiment aucun changement.
C'est tout le problème de "raisonnable" et du "quasiment".
Il existe un certain nombre d'incohérences entre C et C++, je ne me souviens
pas de toutes. sizeof('a') en est une.
Rien que de petites subtilités, qui si elles donnent lieu à bug,
doivent être super amusantes à aller dénicher.
On 2009-03-27, Antoine Leca wrote:Le 27/03/2009 15:53Z, Marc Boyer écrivit :autant écrire du C et le compiler avec un compilo C++ montre
une incompétence importante.
des objectifs importants de C++ étant justement de pouvoir récupérer le
code C existant, il en découle donc que du code C « raisonnable » doit
pouvoir être recompilé en C++ sans quasiment aucun changement.
C'est tout le problème de "raisonnable" et du "quasiment".
Il existe un certain nombre d'incohérences entre C et C++, je ne me souviens
pas de toutes. sizeof('a') en est une.
Rien que de petites subtilités, qui si elles donnent lieu à bug,
doivent être super amusantes à aller dénicher.
Marc Boyer writes:Il existe un certain nombre d'incohérences entre C et C++, je ne me
souviens pas de toutes.
Il ne faut pas exagerer l'importance pratique de ces differences.
Je crois avoir deja eu l'occasion de dire que je travaille sur un programme
historiquement ecrit en C, qui a eu ensuite des parties ecrites en C++ et
qui a decide par la suite de compiler en C++ des choses ecrites au depart
en C. De cette conversion, mon impression -- j'ai pas particulierement
travailler sur la conversion -- est qu'on a a peu pres plus de risque de
trouver un bug du compilateur que du trouver un bug introduit par le fait
que le resultat a une semantique differente en C et en C++ (si j'ai bonne
memoire, on a eu plus d'occurences du premier cas que du second, mais pas
significativement plus).
En passant, certains sont en train de faire modifier le code de gcc pour
qu'il soit compilable en C++ et en C; avec comme effet qu'ils ont ajoute la
possibilite d'avoir un warning sur certaines differences quand on compile
en C.
Marc Boyer <Marc.Boyer@cert.onera.fr.invalid> writes:
Il existe un certain nombre d'incohérences entre C et C++, je ne me
souviens pas de toutes.
Il ne faut pas exagerer l'importance pratique de ces differences.
Je crois avoir deja eu l'occasion de dire que je travaille sur un programme
historiquement ecrit en C, qui a eu ensuite des parties ecrites en C++ et
qui a decide par la suite de compiler en C++ des choses ecrites au depart
en C. De cette conversion, mon impression -- j'ai pas particulierement
travailler sur la conversion -- est qu'on a a peu pres plus de risque de
trouver un bug du compilateur que du trouver un bug introduit par le fait
que le resultat a une semantique differente en C et en C++ (si j'ai bonne
memoire, on a eu plus d'occurences du premier cas que du second, mais pas
significativement plus).
En passant, certains sont en train de faire modifier le code de gcc pour
qu'il soit compilable en C++ et en C; avec comme effet qu'ils ont ajoute la
possibilite d'avoir un warning sur certaines differences quand on compile
en C.
Marc Boyer writes:Il existe un certain nombre d'incohérences entre C et C++, je ne me
souviens pas de toutes.
Il ne faut pas exagerer l'importance pratique de ces differences.
Je crois avoir deja eu l'occasion de dire que je travaille sur un programme
historiquement ecrit en C, qui a eu ensuite des parties ecrites en C++ et
qui a decide par la suite de compiler en C++ des choses ecrites au depart
en C. De cette conversion, mon impression -- j'ai pas particulierement
travailler sur la conversion -- est qu'on a a peu pres plus de risque de
trouver un bug du compilateur que du trouver un bug introduit par le fait
que le resultat a une semantique differente en C et en C++ (si j'ai bonne
memoire, on a eu plus d'occurences du premier cas que du second, mais pas
significativement plus).
En passant, certains sont en train de faire modifier le code de gcc pour
qu'il soit compilable en C++ et en C; avec comme effet qu'ils ont ajoute la
possibilite d'avoir un warning sur certaines differences quand on compile
en C.