diff --git a/SConstruct b/SConstruct index 5a533556c..688962a4d 100644 --- a/SConstruct +++ b/SConstruct @@ -1157,6 +1157,7 @@ gcc-4.8. if Compile(context, text=include, main=_main, msg='whether compiler implements __builtin_bswap{16,32,64} functions', successflags=_successflags_bswap16) or \ Compile(context, text=include, main=_main, msg='whether compiler implements __builtin_bswap{32,64} functions', successflags=_successflags_bswap): return + implicit_tests.append(_implicit_test.RecordedTest('check_optimize_builtin_constant_p', "assume compiler optimizes __builtin_constant_p")) @_custom_test def check_builtin_constant_p(self,context): """ @@ -1184,7 +1185,7 @@ static int a(int b){ ''' main = 'return a(1) + a(2)' Define = context.sconf.Define - if self.Link(context, text=f % 'c(b)', main=main, msg='whether compiler optimizes __builtin_constant_p'): + if self.Link(context, text=f % 'c(b)', main=main, msg='whether compiler optimizes __builtin_constant_p', calling_function='optimize_builtin_constant_p'): Define('DXX_HAVE_BUILTIN_CONSTANT_P') Define('DXX_CONSTANT_TRUE(E)', '(__builtin_constant_p((E)) && (E))') dxx_builtin_constant_p = '__builtin_constant_p(A)' diff --git a/common/include/fwd-gr.h b/common/include/fwd-gr.h index 49631964e..978b20b76 100644 --- a/common/include/fwd-gr.h +++ b/common/include/fwd-gr.h @@ -306,7 +306,7 @@ static inline void _gr_set_current_canvas_inline(grs_canvas *canv) static inline void gr_set_current_canvas(grs_canvas *canv) { #ifdef DXX_HAVE_BUILTIN_CONSTANT_P - if (__builtin_constant_p(!canv)) + if (dxx_builtin_constant_p(!canv)) _gr_set_current_canvas_inline(canv); else #endif diff --git a/common/main/multi.h b/common/main/multi.h index 9afe07242..4d0d248d3 100644 --- a/common/main/multi.h +++ b/common/main/multi.h @@ -506,7 +506,7 @@ void multi_send_endlevel_start(); static inline void multi_send_endlevel_start(bool secret) { #ifdef DXX_HAVE_BUILTIN_CONSTANT_P - if (!__builtin_constant_p(secret) || secret) + if (!dxx_builtin_constant_p(!!secret) || secret) DXX_ALWAYS_ERROR_FUNCTION(multi_send_endlevel_start_with_secret, "secret not supported in Descent II"); #endif (void)secret;