target/5828: gcc-3.0.4 on arm : floating point registers incorrectly reloaded

jeroen dobbelaere jeroen.dobbelaere@acunia.com
Tue Mar 5 02:56:00 GMT 2002


The following reply was made to PR target/5828; it has been noted by GNATS.

From: jeroen dobbelaere <jeroen.dobbelaere@acunia.com>
To: gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, jeroen.dobbelaere@acunia.com,
   gcc-bugs@gcc.gnu.org
Cc:  
Subject: Re: target/5828: gcc-3.0.4 on arm : floating point registers incorrectly reloaded
Date: Tue, 05 Mar 2002 11:43:37 +0100

 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=5828
 
 Following testprogram can be used to verify
 
 Try with :
 g++ -Wall -O float-reload-jdo-1.cpp
 ./a.out
 g++ -Wall -O2 float-reload-jdo-1.cpp
 ./a.out
 g++ -Wall -O3 float-reload-jdo-1.cpp
 ./a.out
 
 
 
 ********* float-reload-jdo-1.cpp - begin ***********
 // float-reload-jdo-1.cpp
 #include <stdio.h>
 
 extern void* do_something(int s) throw(int);
 extern void* do_something_else(int s) throw(int);
 extern double getADouble(int i);
 
 int main(int argc, char* argv[])
 {
    double d0,d1,d2,d3,d4,d5,d6,d7;
    int i=0;
 
    d0=getADouble(i++);
    d1=getADouble(i++);
    d2=getADouble(i++);
    d3=getADouble(i++);
    d4=getADouble(i++);
    d5=getADouble(i++);
    d6=getADouble(i++);
    d7=getADouble(i++);
 
    do_something(1);
 
 
    if(d0 != getADouble(0)) return -1;
    if(d1 != getADouble(1)) return -1;
    if(d2 != getADouble(2)) return -1;
    if(d3 != getADouble(3)) return -1;
    if(d4 != getADouble(4)) return -1;
    if(d5 != getADouble(5)) return -1;
    if(d6 != getADouble(6)) return -1;
    if(d7 != getADouble(7)) return -1;
 
    printf("ok\n");
    return 0;
 }
 
 
 double getADouble(int i)
 {
    const double list[8] = { 123.333, 126.784353, 203.03415, 220.6234605, 0.000134315123, 9384.239451, 1239487157834, 9328432.234 };
 
    return list[i];
 }
 
 void* do_something(int s) throw(int)
 {
    return do_something_else(s);
 }
 
 void* do_something_else(int s) throw(int)
 {
    switch(s) {
    case 0:
      return 0;
    case 1:
      return (void*)1;
    default:
      throw s;
    }
 }
 
 
 ********* float-reload-jdo-1.cpp - end ***********
 
 
 



More information about the Gcc-prs mailing list