Module Name: src Committed By: rillig Date: Fri Sep 3 22:44:09 UTC 2021
Modified Files: src/distrib/sets/lists/tests: mi src/tests/usr.bin/xlint/lint1: Makefile Added Files: src/tests/usr.bin/xlint/lint1: gcc_builtin_overflow.c gcc_builtin_overflow.exp Log Message: tests/lint: test GCC builtins for overflow in strict bool mode Seen in inetd.c. To generate a diff of this commit: cvs rdiff -u -r1.1121 -r1.1122 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.108 -r1.109 src/tests/usr.bin/xlint/lint1/Makefile cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.c \ src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.exp Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.1121 src/distrib/sets/lists/tests/mi:1.1122 --- src/distrib/sets/lists/tests/mi:1.1121 Tue Aug 31 18:59:26 2021 +++ src/distrib/sets/lists/tests/mi Fri Sep 3 22:44:08 2021 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1121 2021/08/31 18:59:26 rillig Exp $ +# $NetBSD: mi,v 1.1122 2021/09/03 22:44:08 rillig Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -6282,6 +6282,8 @@ ./usr/tests/usr.bin/xlint/lint1/gcc_attribute_var.exp tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/xlint/lint1/gcc_bit_field_types.c tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/xlint/lint1/gcc_bit_field_types.exp tests-usr.bin-tests compattestfile,atf +./usr/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.c tests-usr.bin-tests compattestfile,atf +./usr/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.exp tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/xlint/lint1/gcc_cast_union.c tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/xlint/lint1/gcc_cast_union.exp tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/xlint/lint1/gcc_init_compound_literal.c tests-usr.bin-tests compattestfile,atf Index: src/tests/usr.bin/xlint/lint1/Makefile diff -u src/tests/usr.bin/xlint/lint1/Makefile:1.108 src/tests/usr.bin/xlint/lint1/Makefile:1.109 --- src/tests/usr.bin/xlint/lint1/Makefile:1.108 Tue Aug 31 18:59:26 2021 +++ src/tests/usr.bin/xlint/lint1/Makefile Fri Sep 3 22:44:09 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.108 2021/08/31 18:59:26 rillig Exp $ +# $NetBSD: Makefile,v 1.109 2021/09/03 22:44:09 rillig Exp $ NOMAN= # defined MAX_MESSAGE= 346 # see lint1/err.c @@ -172,6 +172,8 @@ FILES+= gcc_attribute_var.c FILES+= gcc_attribute_var.exp FILES+= gcc_bit_field_types.c FILES+= gcc_bit_field_types.exp +FILES+= gcc_builtin_overflow.c +FILES+= gcc_builtin_overflow.exp FILES+= gcc_cast_union.c FILES+= gcc_cast_union.exp FILES+= gcc_init_compound_literal.c Added files: Index: src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.c diff -u /dev/null src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.c:1.1 --- /dev/null Fri Sep 3 22:44:09 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.c Fri Sep 3 22:44:09 2021 @@ -0,0 +1,25 @@ +/* $NetBSD: gcc_builtin_overflow.c,v 1.1 2021/09/03 22:44:09 rillig Exp $ */ +# 3 "gcc_builtin_overflow.c" + +/* + * Some GCC builtin functions return bool, and in lint's strict bool mode, + * that makes a difference. + * + * https://gcc.gnu.org/onlinedocs/gcc/Integer-Overflow-Builtins.html + */ + +/* lint1-extra-flags: -T */ + +void +is_overflow(void) +{ + int sum; + + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ + if (__builtin_add_overflow(1, 2, &sum)) + return; + + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ + if (__builtin_add_overflow_p(1, 2, 12345)) + return; +} Index: src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.exp diff -u /dev/null src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.exp:1.1 --- /dev/null Fri Sep 3 22:44:09 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_builtin_overflow.exp Fri Sep 3 22:44:09 2021 @@ -0,0 +1,2 @@ +gcc_builtin_overflow.c(19): error: controlling expression must be bool, not 'int' [333] +gcc_builtin_overflow.c(23): error: controlling expression must be bool, not 'int' [333]