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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [20030222-1.c] - Diff between revs 297 and 338

Only display areas with differences | Details | Blame | View Log

Rev 297 Rev 338
/* Verify that we get the low part of the long long as an int.  We
/* Verify that we get the low part of the long long as an int.  We
   used to get it wrong on big-endian machines, if register allocation
   used to get it wrong on big-endian machines, if register allocation
   succeeded at all.  We use volatile to make sure the long long is
   succeeded at all.  We use volatile to make sure the long long is
   actually truncated to int, in case a single register is wide enough
   actually truncated to int, in case a single register is wide enough
   for a long long.  */
   for a long long.  */
 
 
#include <limits.h>
#include <limits.h>
 
 
void
void
ll_to_int (long long x, volatile int *p)
ll_to_int (long long x, volatile int *p)
{
{
  int i;
  int i;
  asm ("" : "=r" (i) : "0" (x));
  asm ("" : "=r" (i) : "0" (x));
  *p = i;
  *p = i;
}
}
 
 
int val = INT_MIN + 1;
int val = INT_MIN + 1;
 
 
int main() {
int main() {
  volatile int i;
  volatile int i;
 
 
  ll_to_int ((long long)val, &i);
  ll_to_int ((long long)val, &i);
  if (i != val)
  if (i != val)
    abort ();
    abort ();
 
 
  exit (0);
  exit (0);
}
}
 
 

powered by: WebSVN 2.1.0

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