1 /* $NetBSD: gcc_builtin_overflow.c,v 1.3 2023/07/07 19:45:22 rillig Exp $ */
2 # 3 "gcc_builtin_overflow.c"
3
4 /*
5 * Some GCC builtin functions return bool, and in lint's strict bool mode,
6 * that makes a difference.
7 *
8 * https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html
9 */
10
11 /* lint1-extra-flags: -T -X 351 */
12
13 void
is_overflow(void)14 is_overflow(void)
15 {
16 int sum;
17
18 if (__builtin_add_overflow(1, 2, &sum))
19 return;
20
21 if (__builtin_add_overflow_p(1, 2, 12345))
22 return;
23
24 /* expect+1: error: controlling expression must be bool, not 'int' [333] */
25 if (__builtin_other(1, 2, 12345))
26 return;
27 }
28