-march=i686
Eric Darve
darve@ann.jussieu.fr
Fri Oct 16 07:42:00 GMT 1998
ÃÂ ÃÂ ÃÂ I have a pentium pro 200 processor with linux 2.0.35.
My distribution is debian 2.0. I use version 1.1 of egcs (egcs-2.91.57).
Debian package for libc:
iiÃÂ libc6ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ
2.0.7t-1ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ The GNU C library version
2
iiÃÂ libc6-devÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ 2.0.7t-1ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ
The GNU C library version 2
My binutils
iiÃÂ binutilsÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ 2.9.1-0.2ÃÂ ÃÂ ÃÂ ÃÂ ÃÂ
The GNU assembler, linker and binary utilities
ÃÂ ÃÂ ÃÂ Problem : I get some unexpected NaN with the compiling
option -march=i686.
My test program is
#include <iostream>
class dl
{
ÃÂ int d[2];
public:
ÃÂ dl(int,int);
ÃÂ double signe(const int);
};
inline dl::dl(int i1, int i2) {
ÃÂ d[0] = i1;
ÃÂ d[1] = i2;
}
inline double dl::signe(const int i)
{
ÃÂ if (d[i]>0) return 1.;
ÃÂ else return -1.;
}
int main(void)
{
ÃÂ dl degre(-2,4);
ÃÂ double tab;
ÃÂ int i;
ÃÂ for (i=0;i<2;++i) tab = degre.signe(i);
ÃÂ cout << tab << endl;
ÃÂ for (i=0;i<2;++i) cout << i << "\t" <<
degre.signe(i) << endl;
}
Compiling options:
g++ÃÂ -o bug -march=i686 -O1 bug.cc
The output of ./bug is :
ÃÂ ÃÂ NaN
0 -1
1 1
ÃÂ ÃÂ ÃÂ I get a correct result if:
I remove -march=i686
I remove -O1
I change type "double" to type "int" in bug.cc
ÃÂ ÃÂ ÃÂ Best regards,ÃÂ ÃÂ ÃÂ Eric
--ÃÂ
TravailÃÂ : (331) 44 27 27 17 (work)
Domicile : (331) 40 78 50 33 (home)
FaxÃÂ ÃÂ ÃÂ ÃÂ ÃÂ : (331) 44 27 72 00
Adresses :ÃÂ
** Ch. 114
ààMaison Néerlandaise
ààCité Universitaire Internationale
ÃÂ ÃÂ 61, bd Jourdan
ÃÂ ÃÂ 75014 Paris
** Université Pierre et Marie Curie
ÃÂ ÃÂ Laboratoire d'Analyse Numerique
ààTour 55-65, 5ième étage
ÃÂ ÃÂ 4 Place Jussieu 75252 Paris
ÃÂ
More information about the Gcc-bugs
mailing list