@@ -160,6 +160,11 @@ AC_ARG_ENABLE(external_default_callbacks,
160
160
[ use_external_default_callbacks=$enableval] ,
161
161
[ use_external_default_callbacks=no] )
162
162
163
+ AC_ARG_ENABLE ( side_effect_free_check ,
164
+ AS_HELP_STRING ( [ --enable-side-effect-free-check] ,[ enable checking assertions are side-effect free (yes/no/auto) [ default=no] ] ) ,
165
+ [ use_side_effect_free_check=$enableval] ,
166
+ [ use_side_effect_free_check=no] )
167
+
163
168
# Test-only override of the (autodetected by the C code) "widemul" setting.
164
169
# Legal values are int64 (for [u]int64_t), int128 (for [unsigned] __int128), and auto (the default).
165
170
AC_ARG_WITH ( [ test-override-wide-multiply] , [ ] ,[ set_widemul=$withval] , [ set_widemul=auto] )
@@ -218,6 +223,18 @@ else
218
223
CFLAGS="-O2 $CFLAGS"
219
224
fi
220
225
226
+ set_check_side_effect_free=no
227
+ if test x"$use_side_effect_free_check" != x"no"; then
228
+ SECP_CHECK_SIDE_EFFECT_FREE
229
+ if test x"$has_check_side_effect_free" = x"yes"; then
230
+ set_check_side_effect_free=yes
231
+ else
232
+ if test x"$use_side_effect_free_check" != x"auto"; then
233
+ AC_MSG_ERROR ( [ Side effect free checking requested but not compatible with compiler] )
234
+ fi
235
+ fi
236
+ fi
237
+
221
238
if test x"$req_asm" = x"auto"; then
222
239
SECP_64BIT_ASM_CHECK
223
240
if test x"$has_64bit_asm" = x"yes"; then
@@ -292,6 +309,16 @@ if test x"$use_external_asm" = x"yes"; then
292
309
AC_DEFINE ( USE_EXTERNAL_ASM , 1 , [ Define this symbol if an external (non-inline) assembly implementation is used] )
293
310
fi
294
311
312
+ case $set_check_side_effect_free in
313
+ yes)
314
+ AC_DEFINE ( CHECK_SIDE_EFFECT_FREE , 1 , [ Define this symbol to enable checks for side-effect free statements] )
315
+ ;;
316
+ no)
317
+ ;;
318
+ *)
319
+ AC_MSG_ERROR ( [ invalid selection for check_side_effect_free] )
320
+ ;;
321
+ esac
295
322
296
323
# Select wide multiplication implementation
297
324
case $set_widemul in
0 commit comments