Module Name: src
Committed By: rillig
Date: Thu Jul 13 23:27:20 UTC 2023
Modified Files:
src/usr.bin/xlint/lint1: debug.c decl.c lint1.h
Log Message:
lint: merge duplicate code for checking duplicate type qualifiers
To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.55 src/usr.bin/xlint/lint1/debug.c
cvs rdiff -u -r1.354 -r1.355 src/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.191 -r1.192 src/usr.bin/xlint/lint1/lint1.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.bin/xlint/lint1/debug.c
diff -u src/usr.bin/xlint/lint1/debug.c:1.54 src/usr.bin/xlint/lint1/debug.c:1.55
--- src/usr.bin/xlint/lint1/debug.c:1.54 Thu Jul 13 23:11:11 2023
+++ src/usr.bin/xlint/lint1/debug.c Thu Jul 13 23:27:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: debug.c,v 1.54 2023/07/13 23:11:11 rillig Exp $ */
+/* $NetBSD: debug.c,v 1.55 2023/07/13 23:27:20 rillig Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID)
-__RCSID("$NetBSD: debug.c,v 1.54 2023/07/13 23:11:11 rillig Exp $");
+__RCSID("$NetBSD: debug.c,v 1.55 2023/07/13 23:27:20 rillig Exp $");
#endif
#include <stdlib.h>
@@ -432,8 +432,10 @@ debug_decl_level(const decl_level *dl)
if (dl->d_sou_align_in_bits != 0)
debug_printf(" align=%u", dl->d_sou_align_in_bits);
- debug_word(dl->d_const, "const");
- debug_word(dl->d_volatile, "volatile");
+ debug_word(dl->d_qual.tq_const, "const");
+ debug_word(dl->d_qual.tq_restrict, "restrict");
+ debug_word(dl->d_qual.tq_volatile, "volatile");
+ debug_word(dl->d_qual.tq_atomic, "atomic");
debug_word(dl->d_inline, "inline");
debug_word(dl->d_multiple_storage_classes, "multiple_storage_classes");
debug_word(dl->d_invalid_type_combination, "invalid_type_combination");
Index: src/usr.bin/xlint/lint1/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.354 src/usr.bin/xlint/lint1/decl.c:1.355
--- src/usr.bin/xlint/lint1/decl.c:1.354 Thu Jul 13 23:11:11 2023
+++ src/usr.bin/xlint/lint1/decl.c Thu Jul 13 23:27:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.354 2023/07/13 23:11:11 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.355 2023/07/13 23:27:20 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID)
-__RCSID("$NetBSD: decl.c,v 1.354 2023/07/13 23:11:11 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.355 2023/07/13 23:27:20 rillig Exp $");
#endif
#include <sys/param.h>
@@ -501,21 +501,7 @@ dcs_set_used(void)
void
dcs_add_qualifiers(type_qualifiers qs)
{
-
- if (qs.tq_const) {
- if (dcs->d_const) {
- /* duplicate '%s' */
- warning(10, "const");
- }
- dcs->d_const = true;
- }
- if (qs.tq_volatile) {
- if (dcs->d_volatile) {
- /* duplicate '%s' */
- warning(10, "volatile");
- }
- dcs->d_volatile = true;
- }
+ add_type_qualifiers(&dcs->d_qual, qs);
}
void
@@ -628,8 +614,7 @@ dcs_begin_type(void)
dcs->d_rank_mod = NO_TSPEC;
dcs->d_scl = NOSCL;
dcs->d_type = NULL;
- dcs->d_const = false;
- dcs->d_volatile = false;
+ dcs->d_qual = (type_qualifiers) { .tq_const = false };
dcs->d_inline = false;
dcs->d_multiple_storage_classes = false;
dcs->d_invalid_type_combination = false;
@@ -740,22 +725,23 @@ dcs_end_type(void)
dcs_adjust_storage_class();
- if (dcs->d_const && dcs->d_type->t_const && !dcs->d_type->t_typeof) {
+ if (dcs->d_qual.tq_const && dcs->d_type->t_const
+ && !dcs->d_type->t_typeof) {
lint_assert(dcs->d_type->t_typedef);
/* typedef already qualified with '%s' */
warning(68, "const");
}
- if (dcs->d_volatile && dcs->d_type->t_volatile &&
+ if (dcs->d_qual.tq_volatile && dcs->d_type->t_volatile &&
!dcs->d_type->t_typeof) {
lint_assert(dcs->d_type->t_typedef);
/* typedef already qualified with '%s' */
warning(68, "volatile");
}
- if (dcs->d_const || dcs->d_volatile) {
+ if (dcs->d_qual.tq_const || dcs->d_qual.tq_volatile) {
dcs->d_type = block_dup_type(dcs->d_type);
- dcs->d_type->t_const |= dcs->d_const;
- dcs->d_type->t_volatile |= dcs->d_volatile;
+ dcs->d_type->t_const |= dcs->d_qual.tq_const;
+ dcs->d_type->t_volatile |= dcs->d_qual.tq_volatile;
}
}
@@ -1172,10 +1158,6 @@ qual_ptr *
append_qualified_pointer(qual_ptr *p1, qual_ptr *p2)
{
- if (p2 == NULL)
- return p1;
-
- /* append p1 to p2, keeping p2 */
qual_ptr *tail = p2;
while (tail->p_next != NULL)
tail = tail->p_next;
Index: src/usr.bin/xlint/lint1/lint1.h
diff -u src/usr.bin/xlint/lint1/lint1.h:1.191 src/usr.bin/xlint/lint1/lint1.h:1.192
--- src/usr.bin/xlint/lint1/lint1.h:1.191 Thu Jul 13 23:11:11 2023
+++ src/usr.bin/xlint/lint1/lint1.h Thu Jul 13 23:27:20 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.191 2023/07/13 23:11:11 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.192 2023/07/13 23:27:20 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -363,8 +363,7 @@ typedef struct decl_level {
* trailing padding */
unsigned int d_sou_align_in_bits; /* alignment of the structure
* or union being built */
- bool d_const:1; /* const in declaration specifiers */
- bool d_volatile:1; /* volatile in declaration specifiers */
+ type_qualifiers d_qual; /* in declaration specifiers */
bool d_inline:1; /* inline in declaration specifiers */
bool d_multiple_storage_classes:1; /* reported in dcs_end_type */
bool d_invalid_type_combination:1;