-march=i686
Eric Darve
darve@ann.jussieu.fr
Wed Oct 28 01:04: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