]>
Commit | Line | Data |
---|---|---|
be18831b JJ |
1 | /* Test that __builtin_prefetch does no harm. |
2 | ||
3 | Prefetch using some invalid rw and locality values. These must be | |
4 | compile-time constants. */ | |
5 | ||
6 | /* { dg-do run } */ | |
7 | ||
ee712eab JM |
8 | extern void exit (int); |
9 | ||
be18831b JJ |
10 | enum locality { none, low, moderate, high, bogus }; |
11 | enum rw { read, write }; | |
12 | ||
13 | int arr[10]; | |
14 | ||
15 | void | |
16 | good (int *p) | |
17 | { | |
18 | __builtin_prefetch (p, 0, 0); | |
19 | __builtin_prefetch (p, 0, 1); | |
20 | __builtin_prefetch (p, 0, 2); | |
21 | __builtin_prefetch (p, 0, 3); | |
22 | __builtin_prefetch (p, 1, 0); | |
23 | __builtin_prefetch (p, 1, 1); | |
24 | __builtin_prefetch (p, 1, 2); | |
25 | __builtin_prefetch (p, 1, 3); | |
26 | } | |
27 | ||
28 | void | |
29 | bad (int *p) | |
30 | { | |
9e637a26 JM |
31 | __builtin_prefetch (p, -1, 0); /* { dg-warning "invalid second arg to '__builtin_prefetch'; using zero" } */ |
32 | __builtin_prefetch (p, 2, 0); /* { dg-warning "invalid second arg to '__builtin_prefetch'; using zero" } */ | |
33 | __builtin_prefetch (p, bogus, 0); /* { dg-warning "invalid second arg to '__builtin_prefetch'; using zero" } */ | |
34 | __builtin_prefetch (p, 0, -1); /* { dg-warning "invalid third arg to '__builtin_prefetch'; using zero" } */ | |
35 | __builtin_prefetch (p, 0, 4); /* { dg-warning "invalid third arg to '__builtin_prefetch'; using zero" } */ | |
36 | __builtin_prefetch (p, 0, bogus); /* { dg-warning "invalid third arg to '__builtin_prefetch'; using zero" } */ | |
be18831b JJ |
37 | } |
38 | ||
39 | int | |
40 | main () | |
41 | { | |
42 | good (arr); | |
43 | bad (arr); | |
44 | exit (0); | |
45 | } |