Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/xlint/lint1 lint: add type information to unportable...



details:   https://anonhg.NetBSD.org/src/rev/10efba0c60e8
branches:  trunk
changeset: 379170:10efba0c60e8
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun May 16 10:34:19 2021 +0000

description:
lint: add type information to unportable bit-field type

Seeing the message "unportable bit-field type 'int'" may sound strange
at first, but that's a strict interpretation of the wording in C99
6.7.2.1p4, which requires that the bit-field type is "'_Bool', 'unsigned
int' or 'signed int', or some other implementation-defined type".

The rationale for C99 6.7.2.1 explicitly lists plain 'int' among the
allowed types for bit-fields, regardless of any additional
implementation-defined types.  This means that lint had interpreted this
paragraph wrong, and it should be fixed to allow plain int as well.

diffstat:

 tests/usr.bin/xlint/lint1/msg_034.c   |   4 ++--
 tests/usr.bin/xlint/lint1/msg_034.exp |   2 +-
 tests/usr.bin/xlint/lint1/msg_166.exp |   4 ++--
 usr.bin/xlint/lint1/decl.c            |  12 ++++++------
 usr.bin/xlint/lint1/err.c             |   6 +++---
 5 files changed, 14 insertions(+), 14 deletions(-)

diffs (94 lines):

diff -r 07af6c181e2d -r 10efba0c60e8 tests/usr.bin/xlint/lint1/msg_034.c
--- a/tests/usr.bin/xlint/lint1/msg_034.c       Sun May 16 10:18:24 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_034.c       Sun May 16 10:34:19 2021 +0000
@@ -1,7 +1,7 @@
-/*     $NetBSD: msg_034.c,v 1.3 2021/01/31 11:12:07 rillig Exp $       */
+/*     $NetBSD: msg_034.c,v 1.4 2021/05/16 10:34:19 rillig Exp $       */
 # 3 "msg_034.c"
 
-// Test for message: nonportable bit-field type [34]
+// Test for message: nonportable bit-field type '%s' [34]
 
 /* lint1-flags: -S -g -p -w */
 
diff -r 07af6c181e2d -r 10efba0c60e8 tests/usr.bin/xlint/lint1/msg_034.exp
--- a/tests/usr.bin/xlint/lint1/msg_034.exp     Sun May 16 10:18:24 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_034.exp     Sun May 16 10:34:19 2021 +0000
@@ -1,1 +1,1 @@
-msg_034.c(9): warning: nonportable bit-field type [34]
+msg_034.c(9): warning: nonportable bit-field type 'int' [34]
diff -r 07af6c181e2d -r 10efba0c60e8 tests/usr.bin/xlint/lint1/msg_166.exp
--- a/tests/usr.bin/xlint/lint1/msg_166.exp     Sun May 16 10:18:24 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/msg_166.exp     Sun May 16 10:34:19 2021 +0000
@@ -1,5 +1,5 @@
-msg_166.c(25): warning: nonportable bit-field type [34]
-msg_166.c(26): warning: nonportable bit-field type [34]
+msg_166.c(25): warning: nonportable bit-field type 'int' [34]
+msg_166.c(26): warning: nonportable bit-field type 'int' [34]
 msg_166.c(35): warning: precision lost in bit-field assignment [166]
 msg_166.c(38): warning: precision lost in bit-field assignment [166]
 msg_166.c(39): warning: precision lost in bit-field assignment [166]
diff -r 07af6c181e2d -r 10efba0c60e8 usr.bin/xlint/lint1/decl.c
--- a/usr.bin/xlint/lint1/decl.c        Sun May 16 10:18:24 2021 +0000
+++ b/usr.bin/xlint/lint1/decl.c        Sun May 16 10:34:19 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.180 2021/05/02 22:07:49 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.181 2021/05/16 10:34:19 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: decl.c,v 1.180 2021/05/02 22:07:49 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.181 2021/05/16 10:34:19 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -1106,14 +1106,14 @@ check_bit_field_type(sym_t *dsym,  type_
                                /* bit-field type '%s' invalid in ANSI C */
                                warning(273, type_name(tp));
                        } else if (pflag) {
-                               /* nonportable bit-field type */
-                               warning(34);
+                               /* nonportable bit-field type '%s' */
+                               warning(34, type_name(tp));
                        }
                }
        } else if (t == INT && dcs->d_sign_mod == NOTSPEC) {
                if (pflag && !bitfieldtype_ok) {
-                       /* nonportable bit-field type */
-                       warning(34);
+                       /* nonportable bit-field type '%s' */
+                       warning(34, type_name(tp));
                }
        } else if (t != INT && t != UINT && t != BOOL) {
                /*
diff -r 07af6c181e2d -r 10efba0c60e8 usr.bin/xlint/lint1/err.c
--- a/usr.bin/xlint/lint1/err.c Sun May 16 10:18:24 2021 +0000
+++ b/usr.bin/xlint/lint1/err.c Sun May 16 10:34:19 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: err.c,v 1.117 2021/05/16 10:18:24 rillig Exp $ */
+/*     $NetBSD: err.c,v 1.118 2021/05/16 10:34:19 rillig Exp $ */
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: err.c,v 1.117 2021/05/16 10:18:24 rillig Exp $");
+__RCSID("$NetBSD: err.c,v 1.118 2021/05/16 10:34:19 rillig Exp $");
 #endif
 
 #include <sys/types.h>
@@ -88,7 +88,7 @@ const char *const msgs[] = {
        "incomplete structure or union %s: %s",                       /* 31 */
        "argument type defaults to 'int': %s",                        /* 32 */
        "duplicate member name: %s",                                  /* 33 */
-       "nonportable bit-field type",                                 /* 34 */
+       "nonportable bit-field type '%s'",                            /* 34 */
        "illegal bit-field type '%s'",                                /* 35 */
        "illegal bit-field size: %d",                                 /* 36 */
        "zero size bit-field",                                        /* 37 */



Home | Main Index | Thread Index | Old Index