Module Name:    src
Committed By:   rillig
Date:           Tue Oct  8 19:39:54 UTC 2024

Modified Files:
        src/tests/usr.bin/xlint/lint1: msg_132.c

Log Message:
tests/lint: test integer constraint on multiplication


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/tests/usr.bin/xlint/lint1/msg_132.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/msg_132.c
diff -u src/tests/usr.bin/xlint/lint1/msg_132.c:1.42 src/tests/usr.bin/xlint/lint1/msg_132.c:1.43
--- src/tests/usr.bin/xlint/lint1/msg_132.c:1.42	Sun Aug 18 15:21:09 2024
+++ src/tests/usr.bin/xlint/lint1/msg_132.c	Tue Oct  8 19:39:54 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg_132.c,v 1.42 2024/08/18 15:21:09 rillig Exp $	*/
+/*	$NetBSD: msg_132.c,v 1.43 2024/10/08 19:39:54 rillig Exp $	*/
 # 3 "msg_132.c"
 
 // Test for message: conversion from '%s' to '%s' may lose accuracy [132]
@@ -233,6 +233,25 @@ be32enc(void *buf, u32_t u)
 	p[3] = u & 0xff;
 }
 
+void
+test_ic_mult(void)
+{
+	/* expect+1: warning: conversion from 'unsigned long long' to 'unsigned int' may lose accuracy [132] */
+	u32 = u16 * 65536ULL;
+	/* expect+1: warning: conversion from 'unsigned long long' to 'unsigned int' may lose accuracy [132] */
+	u32 = u16 * 65537ULL;
+
+	/* expect+1: warning: conversion from 'int' to 'unsigned short' may lose accuracy [132] */
+	u16 = 0 * u16;
+	/* expect+1: warning: conversion from 'int' to 'unsigned short' may lose accuracy [132] */
+	u16 = 1 * u16;
+	/* expect+1: warning: conversion from 'int' to 'unsigned short' may lose accuracy [132] */
+	u16 = 2 * u16;
+
+	/* expect+1: warning: conversion from 'unsigned long long' to 'unsigned int' may lose accuracy [132] */
+	u32 = (u16 & 1023ULL) / 1ULL * 1024ULL | (u16 & 1023ULL) / 1ULL * 1ULL;
+}
+
 u32_t
 test_ic_shr(u64_t x)
 {
@@ -456,7 +475,7 @@ binary_operators_on_bit_fields(void)
 }
 
 unsigned char
-combine_arithmetic_and_bit_operations(unsigned int c32)
+combine_arithmetic_and_bit_operations(void)
 {
-	return 0xc0 | (c32 & 0x07c0) / 64;
+	return 0xc0 | (u32 & 0x07c0) / 64;
 }

Reply via email to