xref: /netbsd-src/tests/usr.bin/xlint/lint1/op_shl_lp64.c (revision b2baa50111d645353fa30b4deab0f79d93650c8c)
1*b2baa501Srillig /*	$NetBSD: op_shl_lp64.c,v 1.5 2023/03/28 14:44:35 rillig Exp $	*/
2b1bcf212Srillig # 3 "op_shl_lp64.c"
3b1bcf212Srillig 
4b1bcf212Srillig /*
589727fbcSrillig  * Before decl.c 1.215 from 2021-07-31, lint wrongly treated __uint128_t and
689727fbcSrillig  * __int128_t as being equivalent to a missing type specifier, thereby
789727fbcSrillig  * defaulting to int.  This led to warnings like:
889727fbcSrillig  *
989727fbcSrillig  *	shift amount 105 is greater than bit-size 32 of 'int' [122]
1089727fbcSrillig  *
1189727fbcSrillig  * These warnings had been discovered in ecp_nistp256.c(296).
12b1bcf212Srillig  */
13b1bcf212Srillig 
14dadd5dc3Srillig /* lint1-only-if: lp64 */
15*b2baa501Srillig /* lint1-extra-flags: -X 351 */
16b1bcf212Srillig 
17b1bcf212Srillig const __uint128_t zero105 =
18b1bcf212Srillig     (((__uint128_t)1) << 105)
19b1bcf212Srillig     - (((__uint128_t)1) << 41)
20b1bcf212Srillig     - (((__uint128_t)1) << 9);
2189727fbcSrillig 
2289727fbcSrillig const __uint128_t shl_128_129 =
23e8f3e4bdSrillig     /* expect+1: warning: shift amount 128 equals bit-size of '__uint128_t' [267] */
2489727fbcSrillig     (((__uint128_t)1) << 128)
2589727fbcSrillig     /* expect+1: warning: shift amount 129 is greater than bit-size 128 of '__uint128_t' [122] */
2689727fbcSrillig     - (((__uint128_t)1) << 129);
27