Module Name: src Committed By: rillig Date: Sun Jan 8 18:21:00 UTC 2023
Modified Files: src/tests/usr.bin/xlint/lint1: queries.c Log Message: lint/tests: test query for usual arithmetic conversions To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/tests/usr.bin/xlint/lint1/queries.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/xlint/lint1/queries.c diff -u src/tests/usr.bin/xlint/lint1/queries.c:1.6 src/tests/usr.bin/xlint/lint1/queries.c:1.7 --- src/tests/usr.bin/xlint/lint1/queries.c:1.6 Sat Sep 24 19:55:44 2022 +++ src/tests/usr.bin/xlint/lint1/queries.c Sun Jan 8 18:21:00 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: queries.c,v 1.6 2022/09/24 19:55:44 rillig Exp $ */ +/* $NetBSD: queries.c,v 1.7 2023/01/08 18:21:00 rillig Exp $ */ # 3 "queries.c" /* @@ -95,6 +95,20 @@ Q3(int i, unsigned u) unsigned long long Q4(signed char *ptr, int i, unsigned long long ull) { + + /* expect+1: usual arithmetic conversion for '&' from 'int' to 'unsigned int' [Q4] */ + u32 = u32 & 0xff; + /* + * XXX: C99 5.6.16.2 says that the usual arithmetic conversions + * happen for compound assignments as well. + */ + u32 &= 0xff; + + /* expect+3: implicit conversion changes sign from 'unsigned char' to 'int' [Q3] */ + /* expect+2: usual arithmetic conversion for '&' from 'int' to 'unsigned int' [Q4] */ + /* expect+1: implicit conversion changes sign from 'int' to 'unsigned int' [Q3] */ + u32 = u32 & u8; + /* * The conversion from 'signed char' to 'int' is done by the integer * promotions (C11 6.3.1.1p2), not by the usual arithmetic