mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-13 04:44:39 +00:00
Currently we use the C89 definitions of MR_STATIC_INLINE and friends with clang, which is less than ideal in a couple of ways, firstly we might not get as much inlining as we would like and secondly, for clang, it causes large numbers of warnings about unused functions to be generated. Using GNU C style inlining does not work because we enable the -ansi option when using clang and the (current) behaviour of the -ansi option with clang is to enforce strict C89 conformance (i.e. disable any GNU C extensions.). This change avoids all of the above by (1) adding C99 style definitions of MR_STATIC_INLINE etc for clang and (2) not passing -ansi to clang (i.e. putting clang into c99, or technically gnu99, mode). We fall back on the C89 style definitions if the user does something odd like setting -ansi or -std=c89 themselves. runtime/mercury_std.h: Define MR_STATIC_INLINE and friends for clang in the case where clang is in C99 (or equivalent) mode. configure.ac: Set CFLAGS_FOR_ANSI for clang to empty. Add an explanation of why we do this. scripts/mgnuc.in: Don't pass -ansi to clang.