OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.target/] [cris/] [torture/] [pr34773.c] - Rev 816

Go to most recent revision | Compare with Previous | Blame | View Log

/* { dg-do run } */
union double_union
{
  double d;
  int i[2];
};
void _dtoa_r (double) __attribute__ ((__noinline__));
void _vfprintf_r (double) __attribute__ ((__noinline__));
void
__sprint_r(int);
void
_vfprintf_r(double da)
{
 double ffp = da;
 double value = ffp;
 union double_union tmp;
 
 tmp.d = value;
 
 if ((tmp.i[1]) & ((unsigned)0x80000000L)) {
   value = -value;
 }
 
 _dtoa_r (value);
 
 if (ffp != 0)
   __sprint_r(value == 0);
 __asm__ ("");
}
 
 
double dd = -.012;
double ff = .012;
 
void exit (int) __attribute__ ((__noreturn__));
void abort (void) __attribute__ ((__noreturn__));
void *memset(void *s, int c, __SIZE_TYPE__ n);
void _dtoa_r (double d)
{
  if (d != ff)
    abort ();
  __asm__ ("");
}
 
void __sprint_r (int i)
{
  if (i != 0)
    abort ();
  __asm__ ("");
}
 
int clearstack (void) __attribute__ ((__noinline__));
int clearstack (void)
{
  char doodle[128];
  memset (doodle, 0, sizeof doodle);
  __asm__ volatile ("" : : "g" (doodle) : "memory");
  return doodle[127];
}
 
void doit (void) __attribute__ ((__noinline__));
void doit (void)
{
  _vfprintf_r (dd);
  _vfprintf_r (ff);
  __asm__ ("");
}
 
int main(void)
{
  clearstack ();
  doit ();
  exit (0);
}
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.