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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [pure-1.c] - Rev 774

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

 
/* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-05-27.  */
 
/* Use a different function for each test so the link failures
   indicate which one is broken.  */
extern void link_error0 (void);
extern void link_error1 (void);
extern void link_error2 (void);
extern void link_error3 (void);
extern void link_error4 (void);
extern void link_error5 (void);
extern void link_error6 (void);
extern void link_error7 (void);
 
extern int i;
 
extern int func0 (int) __attribute__ ((__pure__));
extern int func1 (int) __attribute__ ((__const__));
 
/* GCC should automatically detect attributes for these functions.
   At -O3 They'll be inlined, but that's ok.  */
static int func2 (int a) { return i + a; } /* pure */
static int func3 (int a) { return a * 3; } /* const */
static int func4 (int a) { return func0(a) + a; } /* pure */
static int func5 (int a) { return a + func1(a); } /* const */
static int func6 (int a) { return func2(a) + a; } /* pure */
static int func7 (int a) { return a + func3(a); } /* const */
 
int main ()
{
  int i[10], r;
 
  i[0] = 0;
  r = func0(0);
  if (i[0])
    link_error0();
 
  i[1] = 0;
  r = func1(0);
  if (i[1])
    link_error1();
 
  i[2] = 0;
  r = func2(0);
  if (i[2])
    link_error2();
 
  i[3] = 0;
  r = func3(0);
  if (i[3])
    link_error3();
 
  i[4] = 0;
  r = func4(0);
  if (i[4])
    link_error4();
 
  i[5] = 0;
  r = func5(0);
  if (i[5])
    link_error5();
 
  i[6] = 0;
  r = func6(0);
  if (i[6])
    link_error6();
 
  i[7] = 0;
  r = func7(0);
  if (i[7])
    link_error7();
 
  return r;
}
 
int func0 (int a) { return a - i; } /* pure */
int func1 (int a) { return a - a; } /* const */
 
int i = 2;
 
#ifndef __OPTIMIZE__
/* Avoid link failures when not optimizing. */
void link_error0() {}
void link_error1() {}
void link_error2() {}
void link_error3() {}
void link_error4() {}
void link_error5() {}
void link_error6() {}
void link_error7() {}
#endif /* ! __OPTIMIZE__ */
 

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.