OSDN Git Service

* gcc.c-torture/execute/960321-1.x: Remove.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / builtin-prefetch-6.c
1 /* Test that __builtin_prefetch does no harm.
2
3    Data prefetch should not fault if used with an invalid address.  */
4
5 #include <limits.h>
6
7 #define ARRSIZE 65
8 int *bad_addr[ARRSIZE];
9 int arr_used;
10
11 /* Fill bad_addr with a range of values in the hopes that on any target
12    some will be invalid addresses.  */
13 void
14 init_addrs (void)
15 {
16   int i;
17   int bits_per_ptr = sizeof (void *) * 8;
18   for (i = 0; i < bits_per_ptr; i++)
19     bad_addr[i] = (void *)(1UL << i);
20   arr_used = bits_per_ptr + 1;  /* The last element used is zero.  */
21 }
22
23 void
24 prefetch_for_read (void)
25 {
26   int i;
27   for (i = 0; i < ARRSIZE; i++)
28     __builtin_prefetch (bad_addr[i], 0, 0);
29 }
30
31 void
32 prefetch_for_write (void)
33 {
34   int i;
35   for (i = 0; i < ARRSIZE; i++)
36     __builtin_prefetch (bad_addr[i], 1, 0);
37 }
38
39 int
40 main ()
41 {
42   init_addrs ();
43   prefetch_for_read ();
44   prefetch_for_write ();
45   exit (0);
46 }