Module Name:    src
Committed By:   rillig
Date:           Fri Jun 10 18:29:01 UTC 2022

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/usr.bin/xlint/lint1: Makefile msg_132.c msg_132.exp
            msg_132_ilp32.c
Added Files:
        src/tests/usr.bin/xlint/lint1: msg_132_lp64.c msg_132_lp64.exp

Log Message:
tests/lint: fix test for loss of accuracy on ILP32 platforms

The test had been wrong since msg_132.c 1.14 from 2022-05-30.

Using 'unsigned long' in a test that was intended to behave the same on
ILP32 and LP64 was an accident.  Use 'unsigned long long' instead, which
is 64-bits wide on all platforms supported by lint.

Move the test about conversion from 'long' to 'int' to the
platform-specific test files.

Noticed by martin@ on powerpc.


To generate a diff of this commit:
cvs rdiff -u -r1.1211 -r1.1212 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.123 -r1.124 src/tests/usr.bin/xlint/lint1/Makefile
cvs rdiff -u -r1.16 -r1.17 src/tests/usr.bin/xlint/lint1/msg_132.c
cvs rdiff -u -r1.15 -r1.16 src/tests/usr.bin/xlint/lint1/msg_132.exp
cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/msg_132_ilp32.c
cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/xlint/lint1/msg_132_lp64.c \
    src/tests/usr.bin/xlint/lint1/msg_132_lp64.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.1211 src/distrib/sets/lists/tests/mi:1.1212
--- src/distrib/sets/lists/tests/mi:1.1211	Mon Jun  6 10:57:05 2022
+++ src/distrib/sets/lists/tests/mi	Fri Jun 10 18:29:01 2022
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1211 2022/06/06 10:57:05 nia Exp $
+# $NetBSD: mi,v 1.1212 2022/06/10 18:29:01 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -6841,6 +6841,8 @@
 ./usr/tests/usr.bin/xlint/lint1/msg_132.exp			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_132_ilp32.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_132_ilp32.exp		tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/msg_132_lp64.c			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/msg_132_lp64.exp		tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_133.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_133.exp			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_134.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.123 src/tests/usr.bin/xlint/lint1/Makefile:1.124
--- src/tests/usr.bin/xlint/lint1/Makefile:1.123	Thu May 12 20:49:21 2022
+++ src/tests/usr.bin/xlint/lint1/Makefile	Fri Jun 10 18:29:01 2022
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.123 2022/05/12 20:49:21 rillig Exp $
+# $NetBSD: Makefile,v 1.124 2022/06/10 18:29:01 rillig Exp $
 
 NOMAN=		# defined
 MAX_MESSAGE=	349		# see lint1/err.c
@@ -223,6 +223,8 @@ FILES+=		msg_001_c90.c
 FILES+=		msg_001_c90.exp
 FILES+=		msg_132_ilp32.c
 FILES+=		msg_132_ilp32.exp
+FILES+=		msg_132_lp64.c
+FILES+=		msg_132_lp64.exp
 FILES+=		msg_230_uchar.c
 FILES+=		msg_230_uchar.exp
 FILES+=		msg_259_c90.c

Index: src/tests/usr.bin/xlint/lint1/msg_132.c
diff -u src/tests/usr.bin/xlint/lint1/msg_132.c:1.16 src/tests/usr.bin/xlint/lint1/msg_132.c:1.17
--- src/tests/usr.bin/xlint/lint1/msg_132.c:1.16	Mon May 30 07:19:28 2022
+++ src/tests/usr.bin/xlint/lint1/msg_132.c	Fri Jun 10 18:29:01 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg_132.c,v 1.16 2022/05/30 07:19:28 rillig Exp $	*/
+/*	$NetBSD: msg_132.c,v 1.17 2022/06/10 18:29:01 rillig Exp $	*/
 # 3 "msg_132.c"
 
 // Test for message: conversion from '%s' to '%s' may lose accuracy [132]
@@ -203,22 +203,14 @@ struct bit_fields {
 };
 
 unsigned char
-test_bit_fields(struct bit_fields s, unsigned long m)
+test_bit_fields(struct bit_fields s, unsigned long long m)
 {
-	/* expect+1: warning: conversion from 'unsigned long' to 'unsigned int' may lose accuracy [132] */
+	/* expect+1: warning: conversion from 'unsigned long long' to 'unsigned int' may lose accuracy [132] */
 	s.bits_3 = s.bits_32 & m;
 
 	s.bits_5 = s.bits_3 & m;
 	s.bits_32 = s.bits_5 & m;
 
-	/* expect+1: warning: conversion from 'unsigned long' to 'unsigned char' may lose accuracy [132] */
+	/* expect+1: warning: conversion from 'unsigned long long' to 'unsigned char' may lose accuracy [132] */
 	return s.bits_32 & m;
 }
-
-
-unsigned int
-convert_pointer_to_smaller_integer(void *ptr)
-{
-	/* expect+1: warning: conversion from 'unsigned long' to 'unsigned int' may lose accuracy [132] */
-	return (unsigned long)(ptr) >> 12;
-}

Index: src/tests/usr.bin/xlint/lint1/msg_132.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_132.exp:1.15 src/tests/usr.bin/xlint/lint1/msg_132.exp:1.16
--- src/tests/usr.bin/xlint/lint1/msg_132.exp:1.15	Mon May 30 07:19:28 2022
+++ src/tests/usr.bin/xlint/lint1/msg_132.exp	Fri Jun 10 18:29:01 2022
@@ -27,6 +27,5 @@ msg_132.c(125): warning: function 'cover
 msg_132.c(141): warning: conversion from 'unsigned long long' to 'int' may lose accuracy [132]
 msg_132.c(193): warning: conversion from 'unsigned long long' to 'unsigned int' may lose accuracy [132]
 msg_132.c(195): warning: conversion from 'unsigned long long' to 'unsigned int' may lose accuracy [132]
-msg_132.c(209): warning: conversion from 'unsigned long' to 'unsigned int' may lose accuracy [132]
-msg_132.c(215): warning: conversion from 'unsigned long' to 'unsigned char' may lose accuracy [132]
-msg_132.c(223): warning: conversion from 'unsigned long' to 'unsigned int' may lose accuracy [132]
+msg_132.c(209): warning: conversion from 'unsigned long long' to 'unsigned int' may lose accuracy [132]
+msg_132.c(215): warning: conversion from 'unsigned long long' to 'unsigned char' may lose accuracy [132]

Index: src/tests/usr.bin/xlint/lint1/msg_132_ilp32.c
diff -u src/tests/usr.bin/xlint/lint1/msg_132_ilp32.c:1.1 src/tests/usr.bin/xlint/lint1/msg_132_ilp32.c:1.2
--- src/tests/usr.bin/xlint/lint1/msg_132_ilp32.c:1.1	Wed Aug 25 22:04:52 2021
+++ src/tests/usr.bin/xlint/lint1/msg_132_ilp32.c	Fri Jun 10 18:29:01 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg_132_ilp32.c,v 1.1 2021/08/25 22:04:52 rillig Exp $	*/
+/*	$NetBSD: msg_132_ilp32.c,v 1.2 2022/06/10 18:29:01 rillig Exp $	*/
 # 3 "msg_132_ilp32.c"
 
 // Test for message: conversion from '%s' to '%s' may lose accuracy [132]
@@ -30,3 +30,13 @@ array_subscript(const char *p, long long
 	/* expect+1: warning: conversion from 'long long' to 'int' may lose accuracy [132] */
 	return p + idx;
 }
+
+/*
+ * On ILP32 platforms, pointer, long and int have the same size, so there is
+ * no loss of accuracy.
+ */
+unsigned int
+convert_pointer_to_smaller_integer(void *ptr)
+{
+	return (unsigned long)(ptr) >> 12;
+}

Added files:

Index: src/tests/usr.bin/xlint/lint1/msg_132_lp64.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/msg_132_lp64.c:1.1
--- /dev/null	Fri Jun 10 18:29:01 2022
+++ src/tests/usr.bin/xlint/lint1/msg_132_lp64.c	Fri Jun 10 18:29:01 2022
@@ -0,0 +1,14 @@
+/*	$NetBSD: msg_132_lp64.c,v 1.1 2022/06/10 18:29:01 rillig Exp $	*/
+# 3 "msg_132_lp64.c"
+
+// Test for message: conversion from '%s' to '%s' may lose accuracy [132]
+
+/* lint1-extra-flags: -a */
+/* lint1-only-if: lp64 */
+
+unsigned int
+convert_pointer_to_smaller_integer(void *ptr)
+{
+	/* expect+1: warning: conversion from 'unsigned long' to 'unsigned int' may lose accuracy [132] */
+	return (unsigned long)(ptr) >> 12;
+}
Index: src/tests/usr.bin/xlint/lint1/msg_132_lp64.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/msg_132_lp64.exp:1.1
--- /dev/null	Fri Jun 10 18:29:01 2022
+++ src/tests/usr.bin/xlint/lint1/msg_132_lp64.exp	Fri Jun 10 18:29:01 2022
@@ -0,0 +1 @@
+msg_132_lp64.c(13): warning: conversion from 'unsigned long' to 'unsigned int' may lose accuracy [132]

Reply via email to