-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