1*e6298b92Srillig /* $NetBSD: gcc_builtin_overflow.c,v 1.3 2023/07/07 19:45:22 rillig Exp $ */
29665ac6aSrillig # 3 "gcc_builtin_overflow.c"
39665ac6aSrillig
49665ac6aSrillig /*
59665ac6aSrillig * Some GCC builtin functions return bool, and in lint's strict bool mode,
69665ac6aSrillig * that makes a difference.
79665ac6aSrillig *
89665ac6aSrillig * https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html
99665ac6aSrillig */
109665ac6aSrillig
11*e6298b92Srillig /* lint1-extra-flags: -T -X 351 */
129665ac6aSrillig
139665ac6aSrillig void
is_overflow(void)149665ac6aSrillig is_overflow(void)
159665ac6aSrillig {
169665ac6aSrillig int sum;
179665ac6aSrillig
189665ac6aSrillig if (__builtin_add_overflow(1, 2, &sum))
199665ac6aSrillig return;
209665ac6aSrillig
219665ac6aSrillig if (__builtin_add_overflow_p(1, 2, 12345))
229665ac6aSrillig return;
23a388352dSrillig
24a388352dSrillig /* expect+1: error: controlling expression must be bool, not 'int' [333] */
25a388352dSrillig if (__builtin_other(1, 2, 12345))
26a388352dSrillig return;
279665ac6aSrillig }
28