Module Name:    src
Committed By:   rillig
Date:           Sat Mar  9 11:05:05 UTC 2024

Modified Files:
        src/usr.bin/xlint/lint1: lint1.h

Log Message:
lint: clean up comments, use typedefs


To generate a diff of this commit:
cvs rdiff -u -r1.218 -r1.219 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/lint1.h
diff -u src/usr.bin/xlint/lint1/lint1.h:1.218 src/usr.bin/xlint/lint1/lint1.h:1.219
--- src/usr.bin/xlint/lint1/lint1.h:1.218	Sat Mar  9 10:54:12 2024
+++ src/usr.bin/xlint/lint1/lint1.h	Sat Mar  9 11:05:05 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.218 2024/03/09 10:54:12 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.219 2024/03/09 11:05:05 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -71,19 +71,6 @@ typedef struct {
 	int	p_uniq;			/* uniquifier */
 } pos_t;
 
-// TODO: Use bit-fields instead of plain bool, but keep an eye on arm and
-// powerpc, on which NetBSD's GCC 10.5.0 (but not the upstream GCC) generates
-// code that leads to extra 327 warnings, even in msg_327.c, which does not
-// contain any type qualifier at all.
-//
-// A possible starting point for continuing the investigation is that
-// type_qualifiers is a very small struct that contains only bool bit-fields,
-// and this struct is a member of the parser's union.
-//
-// Instead of using plain bool instead of bit-fields, an alternative workaround
-// is to compile cgram.c with -Os or -O1 instead of -O2.  The generated code
-// between -Os and -O2 differs too much though to give a hint at the root
-// cause.
 typedef struct {
 	bool tq_const;
 	bool tq_restrict;
@@ -128,9 +115,7 @@ typedef struct {
 	sym_t	*sou_first_typedef;
 } struct_or_union;
 
-/*
- * same as above for enums
- */
+/* The same as in struct_or_union, only for enums. */
 typedef struct {
 	bool	en_incomplete:1;
 	sym_t	*en_first_enumerator;
@@ -138,28 +123,21 @@ typedef struct {
 	sym_t	*en_first_typedef;
 } enumeration;
 
-/*
- * The type of an expression or object. Complex types are formed via t_subt
- * (for arrays, pointers and functions), as well as t_sou.
- */
+/* The type of an expression, object or function. */
 struct lint1_type {
 	tspec_t	t_tspec;	/* type specifier */
 	bool	t_incomplete_array:1;
-	bool	t_const:1;	/* const modifier */
-	bool	t_volatile:1;	/* volatile modifier */
+	bool	t_const:1;
+	bool	t_volatile:1;
 	bool	t_proto:1;	/* function prototype (t_params valid) */
 	bool	t_vararg:1;	/* prototype with '...' */
 	bool	t_typedef:1;	/* type defined with typedef */
 	bool	t_typeof:1;	/* type defined with GCC's __typeof__ */
 	bool	t_bitfield:1;
 	/*
-	 * Either the type is currently an enum (having t_tspec ENUM), or it is
-	 * an integer type (typically INT) that has been implicitly converted
-	 * from an enum type.  In both cases, t_enum is valid.
-	 *
-	 * The information about a former enum type is retained to allow type
-	 * checks in expressions such as ((var1 & 0x0001) == var2), to detect
-	 * when var1 and var2 are from incompatible enum types.
+	 * Either the type is currently an enum (having t_tspec ENUM), or it
+	 * is an integer type (typically INT) that has been implicitly
+	 * converted from an enum type.  In both cases, t_enum is valid.
 	 */
 	bool	t_is_enum:1;
 	bool	t_packed:1;
@@ -179,7 +157,7 @@ struct lint1_type {
 #define	t_dim	t_u._t_dim
 #define	t_sou	t_u._t_sou
 #define	t_enum	t_u._t_enum
-#define	t_params	t_u._t_params
+#define	t_params t_u._t_params
 
 
 typedef enum {
@@ -189,16 +167,14 @@ typedef enum {
 	SK_LABEL
 } symbol_kind;
 
-/*
- * storage classes and related things
- */
+/* storage classes and related things */
 typedef enum {
 	NO_SCL,
 	EXTERN,			/* external symbols (independent of decl_t) */
 	STATIC,			/* static symbols (local and global) */
 	AUTO,			/* automatic symbols (except register) */
 	REG,			/* register */
-	TYPEDEF,		/* typedef */
+	TYPEDEF,
 	THREAD_LOCAL,
 	STRUCT_TAG,
 	UNION_TAG,
@@ -217,9 +193,7 @@ typedef enum {
 	FS_NORETURN,		/* since C11 */
 } function_specifier;
 
-/*
- * symbol table entry
- */
+/* A type, variable, keyword; basically anything that has a name. */
 struct sym {
 	const char *s_name;
 	const char *s_rename;	/* renamed symbol's given name */
@@ -232,26 +206,26 @@ struct sym {
 	symbol_kind s_kind;
 	const struct keyword *s_keyword;
 	bool	s_bitfield:1;
-	bool	s_set:1;	/* variable set, label defined */
-	bool	s_used:1;	/* variable/label used */
-	bool	s_param:1;	/* symbol is function parameter */
-	bool	s_register:1;	/* symbol is register variable */
+	bool	s_set:1;
+	bool	s_used:1;
+	bool	s_param:1;
+	bool	s_register:1;
 	bool	s_defparam:1;	/* undefined symbol in old-style function
 				 * definition */
 	bool	s_return_type_implicit_int:1;
 	bool	s_osdef:1;	/* symbol stems from old-style function def. */
-	bool	s_inline:1;	/* true if this is an inline function */
-	struct sym *s_ext_sym;	/* for locally declared external symbols, the
+	bool	s_inline:1;
+	sym_t	*s_ext_sym;	/* for locally declared external symbols, the
 				 * pointer to the external symbol with the same
 				 * name */
 	def_t	s_def;		/* declared, tentative defined, defined */
-	scl_t	s_scl;		/* storage class, more or less */
+	scl_t	s_scl;
 	int	s_block_level;	/* level of declaration, -1 if not in symbol
 				 * table */
 	type_t	*s_type;
 	union {
 		bool s_bool_constant;
-		int s_enum_constant;	/* XXX: should be TARG_INT */
+		int s_enum_constant;
 		struct {
 			struct_or_union *sm_containing_type;
 			unsigned int sm_offset_in_bits;
@@ -267,7 +241,7 @@ struct sym {
 				function_specifier function_specifier;
 			} u;
 		} s_keyword;
-		struct sym *s_old_style_params;	/* parameters in an old-style
+		sym_t	*s_old_style_params;	/* parameters in an old-style
 						 * function definition */
 	} u;
 	sym_t	*s_symtab_next;	/* next symbol in the same symtab bucket */
@@ -300,15 +274,12 @@ typedef struct tnode tnode_t;
 
 /* An expression, forming an abstract syntax tree. */
 struct tnode {
-	op_t	tn_op;		/* operator */
-	type_t	*tn_type;	/* type */
-	bool	tn_lvalue:1;	/* node is lvalue */
+	op_t	tn_op;
+	type_t	*tn_type;
+	bool	tn_lvalue:1;
 	bool	tn_cast:1;	/* if tn_op == CVT, it's an explicit cast */
 	bool	tn_parenthesized:1;
-	bool	tn_sys:1;	/* the operator comes from a system header;
-				 * used in strict bool mode to allow mixing
-				 * bool and scalar, as these places are not
-				 * considered fixable */
+	bool	tn_sys:1;	/* comes from a system header */
 	bool	tn_system_dependent:1; /* depends on sizeof or offsetof */
 	union {
 		struct {
@@ -349,9 +320,9 @@ typedef struct {
 
 typedef enum decl_level_kind {
 	DLK_EXTERN,		/* global types, variables or functions */
-	DLK_STRUCT,		/* members */
-	DLK_UNION,		/* members */
-	DLK_ENUM,		/* constants */
+	DLK_STRUCT,		/* struct members */
+	DLK_UNION,		/* union members */
+	DLK_ENUM,		/* enum constants */
 	DLK_OLD_STYLE_PARAMS,	/* parameters in an old-style function
 				 * definition */
 	DLK_PROTO_PARAMS,	/* parameters in a prototype function

Reply via email to