1*c85f09ccSJohn Levon 2*c85f09ccSJohn Levon 3*c85f09ccSJohn Levon void test(void (*fun)(void)); test(void (* fun)(void))4*c85f09ccSJohn Levonvoid test(void (*fun)(void)) 5*c85f09ccSJohn Levon { 6*c85f09ccSJohn Levon typedef typeof(__builtin_trap) t; // OK 7*c85f09ccSJohn Levon void (*f)(void); 8*c85f09ccSJohn Levon int i; 9*c85f09ccSJohn Levon 10*c85f09ccSJohn Levon f = __builtin_trap; 11*c85f09ccSJohn Levon f = &__builtin_trap; 12*c85f09ccSJohn Levon f = *__builtin_trap; // OK for GCC 13*c85f09ccSJohn Levon f = __builtin_trap + 0; 14*c85f09ccSJohn Levon f = __builtin_trap + 1; 15*c85f09ccSJohn Levon f = __builtin_trap - 1; 16*c85f09ccSJohn Levon 17*c85f09ccSJohn Levon // (void) __builtin_trap; 18*c85f09ccSJohn Levon f = (void*) __builtin_trap; 19*c85f09ccSJohn Levon f = (unsigned long) __builtin_trap; 20*c85f09ccSJohn Levon 21*c85f09ccSJohn Levon i = !__builtin_trap; 22*c85f09ccSJohn Levon i = (__builtin_trap > fun); 23*c85f09ccSJohn Levon i = (__builtin_trap == fun); 24*c85f09ccSJohn Levon i = (fun < __builtin_trap); 25*c85f09ccSJohn Levon i = (fun == __builtin_trap); 26*c85f09ccSJohn Levon 27*c85f09ccSJohn Levon __builtin_trap - fun; 28*c85f09ccSJohn Levon fun - __builtin_trap; 29*c85f09ccSJohn Levon } 30*c85f09ccSJohn Levon 31*c85f09ccSJohn Levon /* 32*c85f09ccSJohn Levon * check-name: builtin arithmetic 33*c85f09ccSJohn Levon * check-command: sparse -Wno-decl $file 34*c85f09ccSJohn Levon * check-known-to-fail 35*c85f09ccSJohn Levon * 36*c85f09ccSJohn Levon * check-error-start 37*c85f09ccSJohn Levon builtin-arith.c:10:xx: error: ... 38*c85f09ccSJohn Levon builtin-arith.c:11:xx: error: ... 39*c85f09ccSJohn Levon builtin-arith.c:13:xx: error: arithmetics on pointers to functions 40*c85f09ccSJohn Levon builtin-arith.c:14:xx: error: arithmetics on pointers to functions 41*c85f09ccSJohn Levon builtin-arith.c:15:xx: error: arithmetics on pointers to functions 42*c85f09ccSJohn Levon builtin-arith.c:18:xx: error: ... 43*c85f09ccSJohn Levon builtin-arith.c:19:xx: error: ... 44*c85f09ccSJohn Levon builtin-arith.c:21:xx: error: ... 45*c85f09ccSJohn Levon builtin-arith.c:22:xx: error: ... 46*c85f09ccSJohn Levon builtin-arith.c:23:xx: error: ... 47*c85f09ccSJohn Levon builtin-arith.c:24:xx: error: ... 48*c85f09ccSJohn Levon builtin-arith.c:25:xx: error: ... 49*c85f09ccSJohn Levon builtin-arith.c:27:24: error: subtraction of functions? Share your drugs 50*c85f09ccSJohn Levon builtin-arith.c:28:13: error: subtraction of functions? Share your drugs 51*c85f09ccSJohn Levon * check-error-end 52*c85f09ccSJohn Levon */ 53