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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [991016-1.c] - Blame information for rev 688

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 688 jeremybenn
/* Two of these types will, on current gcc targets, have the same
2
   mode but have different alias sets.  DOIT tries to get gcse to
3
   invalidly hoist one of the values out of the loop.  */
4
 
5
typedef int T0;
6
typedef long T1;
7
typedef long long T2;
8
 
9
int
10
doit(int sel, int n, void *p)
11
{
12
  T0 * const p0 = p;
13
  T1 * const p1 = p;
14
  T2 * const p2 = p;
15
 
16
  switch (sel)
17
    {
18
    case 0:
19
      do
20
        *p0 += *p0;
21
      while (--n);
22
      return *p0 == 0;
23
 
24
    case 1:
25
      do
26
        *p1 += *p1;
27
      while (--n);
28
      return *p1 == 0;
29
 
30
    case 2:
31
      do
32
        *p2 += *p2;
33
      while (--n);
34
      return *p2 == 0;
35
 
36
    default:
37
      abort ();
38
    }
39
}
40
 
41
int
42
main()
43
{
44
  T0 v0; T1 v1; T2 v2;
45
 
46
  v0 = 1; doit(0, 5, &v0);
47
  v1 = 1; doit(1, 5, &v1);
48
  v2 = 1; doit(2, 5, &v2);
49
 
50
  if (v0 != 32) abort ();
51
  if (v1 != 32) abort ();
52
  if (v2 != 32) abort ();
53
 
54
  exit (0);
55
}

powered by: WebSVN 2.1.0

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