From "Uecker, Martin" <> Subject detecting integer constant expressions in macros Date Tue, 20 Mar 2018 22:13:35 +0000

Hi Linus,



here is an idea:



a test for integer constant expressions which returns an

integer constant expression itself which should be suitable

for passing to __builtin_choose_expr might be:



#define ICE_P(x) (sizeof(int) == sizeof(*(1 ? ((void*)((x) * 0l)) :

(int*)1)))



This also does not evaluate x itself on gcc although this is

not guaranteed by the standard. (And I haven't tried any older

gcc.)



Best,

Martin