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 8enum locality { none, low, moderate, high, bogus }; 9enum rw { read, write }; 10 11int arr[10]; 12 13void 14good (int *p) 15{ 16 __builtin_prefetch (p, 0, 0); 17 __builtin_prefetch (p, 0, 1); 18 __builtin_prefetch (p, 0, 2); 19 __builtin_prefetch (p, 0, 3); 20 __builtin_prefetch (p, 1, 0); 21 __builtin_prefetch (p, 1, 1); 22 __builtin_prefetch (p, 1, 2); 23 __builtin_prefetch (p, 1, 3); 24} 25 26void 27bad (int *p) 28{ 29 __builtin_prefetch (p, -1, 0); /* { dg-warning "invalid second arg to __builtin_prefetch; using zero" } */ 30 __builtin_prefetch (p, 2, 0); /* { dg-warning "invalid second arg to __builtin_prefetch; using zero" } */ 31 __builtin_prefetch (p, bogus, 0); /* { dg-warning "invalid second arg to __builtin_prefetch; using zero" } */ 32 __builtin_prefetch (p, 0, -1); /* { dg-warning "invalid third arg to __builtin_prefetch; using zero" } */ 33 __builtin_prefetch (p, 0, 4); /* { dg-warning "invalid third arg to __builtin_prefetch; using zero" } */ 34 __builtin_prefetch (p, 0, bogus); /* { dg-warning "invalid third arg to __builtin_prefetch; using zero" } */ 35} 36 37int 38main () 39{ 40 good (arr); 41 bad (arr); 42 exit (0); 43} 44