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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [ssa-ccp-32.c] - Blame information for rev 689

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 689 jeremybenn
/* { dg-do run } */
2
/* { dg-options "-O" } */
3
 
4
extern void link_error (void);
5
unsigned int __attribute__((noinline,noclone))
6
test0 (unsigned int a)
7
{
8
  a = a & 1;
9
  a = a << 1 | a >> (sizeof (unsigned int) * 8 - 1);
10
  if (a & 1)
11
    {
12
      a = a | 4;
13
      link_error ();
14
    }
15
  if (a & 4)
16
    link_error ();
17
  return a;
18
}
19
int __attribute__((noinline,noclone))
20
test1 (int a)
21
{
22
  a |= 1;
23
  a = a << (sizeof (int) * 8 - 1);
24
  if (a >= 0)
25
    link_error ();
26
  a = a * 4;
27
  if (a & ~3)
28
    link_error ();
29
  if (a == -1)
30
    link_error ();
31
  return a;
32
}
33
int __attribute__((noinline,noclone))
34
test2 (int a)
35
{
36
  a = a | 0xff;
37
  a = a + 1;
38
  if (a & 0xff)
39
    link_error ();
40
  a = -a;
41
  if (a & 0xff)
42
    link_error ();
43
  a = a - 1;
44
  if ((a & 0xff) != 0xff)
45
    link_error ();
46
  return a;
47
}
48
extern void abort (void);
49
int main()
50
{
51
  if (test0 (1) != 2)
52
    abort ();
53
  if (test1 (0) != 0)
54
    abort ();
55
  if (test2 (-1) != -1)
56
    abort ();
57
  return 0;
58
}

powered by: WebSVN 2.1.0

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