xref: /netbsd-src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.c (revision e6298b924c5ba98f3a22919b56dab04a87cdbb1c)
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