compier: Zap __builtin_constant_p on gcc 4.x series

It is been discovered that on gcc-4.8.4 compiler can't
properly evaluate __builtin_constant_p.

 | gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
 |
 | In file included from asm/nasm.c:38:0:
 | asm/nasm.c: In function ‘assemble_file’:
 | ./include/compiler.h:377:27: error: first argument to ‘__builtin_choose_expr’ not a constant
 |  # define if_constant(x,y) __builtin_choose_expr(is_constant(x),(x),(y))
 |                            ^
 | ./include/nasmlib.h:145:23: note: in expansion of macro ‘if_constant’
 |          static_assert(if_constant(x, 1), #x);                               \
 |                        ^
 | ./include/nasmlib.h:167:9: note: in expansion of macro ‘nasm_try_static_assert’
 |          nasm_try_static_assert(x);                              \
 |          ^
 | asm/nasm.c:1544:17: note: in expansion of macro ‘nasm_assert’
 |                  nasm_assert(output_ins.times >= 0);
 |

Zap it for 4.x series so we could run our tests.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This commit is contained in:
Cyrill Gorcunov 2018-12-15 20:21:09 +03:00
parent 6f33dbb087
commit 7d23d8d26f

View File

@ -353,7 +353,11 @@ size_t strnlen(const char *s, size_t maxlen);
/* Determine probabilistically if something is a compile-time constant */
#ifdef HAVE___BUILTIN_CONSTANT_P
# if defined(__GNUC__) && (__GNUC__ >= 5)
# define is_constant(x) __builtin_constant_p((x))
# else
# define is_constant(x) false
# endif
#else
# define is_constant(x) false
#endif