From: Arnaud Giersch Date: Wed, 17 Oct 2012 08:37:06 +0000 (+0200) Subject: Use function-like macros instead of inline functions for MC_is_active(). X-Git-Tag: v3_8~47 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/8065b83e3317c2162066e7d541682a6df037bae4?hp=aa022d1e577ba93e5fb2841a312b8ac6b00a4ffd Use function-like macros instead of inline functions for MC_is_active(). When using functions, Gcc apparently does not remove dead branches when building without optimizations, and then complains at link time with: Linking C executable ../../bin/gras_stub_generator ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_ignore' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_do_the_modelcheck_for_real' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_process_clock_get' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_process_clock_add' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_memory_init' ../../lib/libsimgrid.so.3.8: error: undefined reference to 'MC_new_stack_area' collect2: error: ld returned 1 exit status This is if course when building with -Denable_model-checking=OFF. --- diff --git a/include/simgrid/modelchecker.h b/include/simgrid/modelchecker.h index 65d437a45c..52b2ed7f2d 100644 --- a/include/simgrid/modelchecker.h +++ b/include/simgrid/modelchecker.h @@ -16,9 +16,7 @@ extern int _surf_do_model_check; /* please don't use directly: we inline MC_is_active, but that's what you should use */ -static int MC_is_active(void) { - return _surf_do_model_check; -} +#define MC_is_active() _surf_do_model_check XBT_PUBLIC(void) MC_assert(int); XBT_PUBLIC(int) MC_random(int min, int max); @@ -27,10 +25,7 @@ XBT_PUBLIC(void) MC_automaton_new_propositional_symbol(const char* id, void* fct #else #define MC_assert(a) xbt_assert(a) - -static int MC_is_active(void) { - return 0; -} +#define MC_is_active() 0 #endif