Module Name:    src
Committed By:   rillig
Date:           Sat Apr 30 19:18:48 UTC 2022

Modified Files:
        src/usr.bin/xlint/lint1: cgram.y func.c tree.c

Log Message:
lint: inline macro Sflag in cases of expected behavior

In the grammar rules 'enums_with_opt_comma' and 'block_item_list',
checking for allow_c99 was redundant since c99ism does not warn in C99
mode.

In the grammar rule 'designator', align the two actions structurally.

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.407 -r1.408 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.132 -r1.133 src/usr.bin/xlint/lint1/func.c
cvs rdiff -u -r1.436 -r1.437 src/usr.bin/xlint/lint1/tree.c

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/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.407 src/usr.bin/xlint/lint1/cgram.y:1.408
--- src/usr.bin/xlint/lint1/cgram.y:1.407	Fri Apr 29 22:44:44 2022
+++ src/usr.bin/xlint/lint1/cgram.y	Sat Apr 30 19:18:48 2022
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.407 2022/04/29 22:44:44 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.408 2022/04/30 19:18:48 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.y,v 1.407 2022/04/29 22:44:44 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.408 2022/04/30 19:18:48 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -500,7 +500,7 @@ postfix_expression:
 		begin_initialization(tmp);
 		cgram_declare(tmp, true, NULL);
 	  } init_lbrace initializer_list comma_opt init_rbrace {
-		if (!Sflag)
+		if (!allow_c99)
 			 /* compound literals are a C99/GCC extension */
 			 gnuism(319);
 		$$ = build_name(*current_initsym(), false);
@@ -1103,9 +1103,7 @@ enum_decl_lbrace:		/* helper for C99 6.7
 enums_with_opt_comma:		/* helper for C99 6.7.2.2 */
 	  enumerator_list
 	| enumerator_list T_COMMA {
-		if (Sflag) {
-			/* C99 6.7.2.2p1 allows trailing ',' */
-		} else if (sflag) {
+		if (!allow_c99 && !allow_trad) {
 			/* trailing ',' prohibited in enum declaration */
 			error(54);
 		} else {
@@ -1581,13 +1579,13 @@ designator_list:		/* C99 6.7.8 "Initiali
 
 designator:			/* C99 6.7.8 "Initialization" */
 	  T_LBRACK range T_RBRACK {
-		add_designator_subscript($2);
-		if (!Sflag)
+		if (!allow_c99)
 			/* array initializer with designators is a C99 ... */
 			warning(321);
+		add_designator_subscript($2);
 	  }
 	| T_POINT identifier {
-		if (!Sflag)
+		if (!allow_c99)
 			/* struct or union member name in initializer is ... */
 			warning(313);
 		add_designator_member($2);
@@ -1704,7 +1702,7 @@ compound_statement_rbrace:
 block_item_list:		/* C99 6.8.2 */
 	  block_item
 	| block_item_list block_item {
-		if (!Sflag && $1 && !$2)
+		if ($1 && !$2)
 			/* declarations after statements is a C99 feature */
 			c99ism(327);
 		$$ = $1 || $2;

Index: src/usr.bin/xlint/lint1/func.c
diff -u src/usr.bin/xlint/lint1/func.c:1.132 src/usr.bin/xlint/lint1/func.c:1.133
--- src/usr.bin/xlint/lint1/func.c:1.132	Sat Apr  9 23:41:22 2022
+++ src/usr.bin/xlint/lint1/func.c	Sat Apr 30 19:18:48 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: func.c,v 1.132 2022/04/09 23:41:22 rillig Exp $	*/
+/*	$NetBSD: func.c,v 1.133 2022/04/30 19:18:48 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: func.c,v 1.132 2022/04/09 23:41:22 rillig Exp $");
+__RCSID("$NetBSD: func.c,v 1.133 2022/04/30 19:18:48 rillig Exp $");
 #endif
 
 #include <stdlib.h>
@@ -359,7 +359,7 @@ check_missing_return_value(void)
 		return;
 
 	/* C99 5.1.2.2.3 "Program termination" p1 */
-	if (Sflag && strcmp(funcsym->s_name, "main") == 0)
+	if (allow_c99 && strcmp(funcsym->s_name, "main") == 0)
 		return;
 
 	/* function %s falls off bottom without returning value */

Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.436 src/usr.bin/xlint/lint1/tree.c:1.437
--- src/usr.bin/xlint/lint1/tree.c:1.436	Tue Apr 19 23:16:14 2022
+++ src/usr.bin/xlint/lint1/tree.c	Sat Apr 30 19:18:48 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: tree.c,v 1.436 2022/04/19 23:16:14 rillig Exp $	*/
+/*	$NetBSD: tree.c,v 1.437 2022/04/30 19:18:48 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: tree.c,v 1.436 2022/04/19 23:16:14 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.437 2022/04/30 19:18:48 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -179,7 +179,7 @@ fallback_symbol(sym_t *sym)
 	}
 
 	if (block_level > 0 && strcmp(sym->s_name, "__func__") == 0) {
-		if (!Sflag)
+		if (!allow_c99)
 			/* __func__ is a C99 feature */
 			warning(317);
 		sym->s_type = block_derive_type(gettyp(CHAR), PTR);
@@ -248,10 +248,10 @@ build_name_call(sym_t *sym)
 		if (allow_gcc && is_gcc_bool_builtin(sym->s_name))
 			sym->s_type = gettyp(BOOL);
 
-	} else if (Sflag) {
+	} else if (allow_c99) {
 		/* function '%s' implicitly declared to return int */
 		error(215, sym->s_name);
-	} else if (sflag) {
+	} else if (!allow_trad) {
 		/* function '%s' implicitly declared to return int */
 		warning(215, sym->s_name);
 	}
@@ -978,7 +978,7 @@ typeok_shl(const mod_t *mp, tspec_t lt, 
 		 * that there is really a difference between
 		 * ANSI C and traditional C.
 		 */
-		if (hflag && !Sflag)
+		if (hflag && !allow_c99)
 			/* semantics of '%s' change in ANSI C; use ... */
 			warning(118, mp->m_name);
 	}
@@ -2220,7 +2220,7 @@ check_integer_conversion(op_t op, int ar
 	if (op == CVT)
 		return;
 
-	if (Sflag && nt == BOOL)
+	if (allow_c99 && nt == BOOL)
 		return;		/* See C99 6.3.1.2 */
 
 	if (Pflag && pflag && aflag > 0 &&

Reply via email to