On Friday 2008-12-26 07:26, Ian Lance Taylor wrote: > >> Hi, I would like to do something like >> >> static inline void foo (unsigned long x) >> { >> if (__builtin_constant_p (x)) >> { >> asm volatile ("... %0" :: "n" (x)); >> } >> else >> { >> __builtin_error ("foo must be used with a compile time constant"); >> } >> } >> >> Is there a way to generate an error/warning/info by making gcc >> call error/warning/info? >> >> So that in the above case an understandable error message is printed. > >Not really, no. It would be a useful feature. In C++ you can use >template tricks to implement this. Does not even need a template. #define foo(x) ({ \ BUILD_BUG_ON(!__builtin_constant_p(x)); \ __foo(x); \ }) void __foo(unsigned long x) { asm ... } with BUILD_BUG_ON from http://lxr.linux.no/linux+v2.6.28/include/linux/kernel.h#L509