Module Name:    src
Committed By:   rillig
Date:           Sat Jul  1 09:31:56 UTC 2023

Modified Files:
        src/usr.bin/xlint/lint1: decl.c externs1.h func.c tree.c

Log Message:
lint: clean up duplicate and dead code for integer constants

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.330 -r1.331 src/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.184 -r1.185 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.160 -r1.161 src/usr.bin/xlint/lint1/func.c
cvs rdiff -u -r1.540 -r1.541 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/decl.c
diff -u src/usr.bin/xlint/lint1/decl.c:1.330 src/usr.bin/xlint/lint1/decl.c:1.331
--- src/usr.bin/xlint/lint1/decl.c:1.330	Fri Jun 30 21:39:54 2023
+++ src/usr.bin/xlint/lint1/decl.c	Sat Jul  1 09:31:55 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.330 2023/06/30 21:39:54 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.331 2023/07/01 09:31:55 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.330 2023/06/30 21:39:54 rillig Exp $");
+__RCSID("$NetBSD: decl.c,v 1.331 2023/07/01 09:31:55 rillig Exp $");
 #endif
 
 #include <sys/param.h>
@@ -3195,7 +3195,10 @@ to_int_constant(tnode_t *tn, bool requir
 	if (tn == NULL)
 		return 1;
 
-	val_t *v = constant(tn, required);
+	val_t *v = integer_constant(tn, required);
+	bool is_unsigned = is_uinteger(v->v_tspec);
+	int64_t val = v->v_quad;
+	free(v);
 
 	/*
 	 * Abstract declarations are used inside expression. To free
@@ -3206,28 +3209,11 @@ to_int_constant(tnode_t *tn, bool requir
 	if (tn->tn_op != CON && dcs->d_kind != DLK_ABSTRACT)
 		expr_free_all();
 
-	tspec_t t = v->v_tspec;
-	int i;
-	if (t == FLOAT || t == DOUBLE || t == LDOUBLE) {
-		i = (int)v->v_ldbl;
-		/* integral constant expression expected */
-		error(55);
-	} else {
-		i = (int)v->v_quad;
-		if (is_uinteger(t)) {
-			if ((uint64_t)v->v_quad > (uint64_t)TARG_INT_MAX) {
-				/* integral constant too large */
-				warning(56);
-			}
-		} else {
-			if (v->v_quad > (int64_t)TARG_INT_MAX ||
-			    v->v_quad < (int64_t)TARG_INT_MIN) {
-				/* integral constant too large */
-				warning(56);
-			}
-		}
-	}
-
-	free(v);
-	return i;
+	bool out_of_bounds = is_unsigned
+	    ? (uint64_t)val > (uint64_t)TARG_INT_MAX
+	    : val > (int64_t)TARG_INT_MAX || val < (int64_t)TARG_INT_MIN;
+	if (out_of_bounds)
+		/* integral constant too large */
+		warning(56);
+	return (int)val;
 }

Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.184 src/usr.bin/xlint/lint1/externs1.h:1.185
--- src/usr.bin/xlint/lint1/externs1.h:1.184	Sat Jul  1 06:09:24 2023
+++ src/usr.bin/xlint/lint1/externs1.h	Sat Jul  1 09:31:55 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs1.h,v 1.184 2023/07/01 06:09:24 rillig Exp $	*/
+/*	$NetBSD: externs1.h,v 1.185 2023/07/01 09:31:55 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -269,7 +269,7 @@ tnode_t	*build_alignof(const type_t *);
 tnode_t	*cast(tnode_t *, type_t *);
 tnode_t	*build_function_argument(tnode_t *, tnode_t *);
 tnode_t	*build_function_call(tnode_t *, bool, tnode_t *);
-val_t	*constant(tnode_t *, bool);
+val_t	*integer_constant(tnode_t *, bool);
 void	expr(tnode_t *, bool, bool, bool, bool);
 void	check_expr_misc(const tnode_t *, bool, bool, bool, bool, bool, bool);
 bool	constant_addr(const tnode_t *, const sym_t **, ptrdiff_t *);

Index: src/usr.bin/xlint/lint1/func.c
diff -u src/usr.bin/xlint/lint1/func.c:1.160 src/usr.bin/xlint/lint1/func.c:1.161
--- src/usr.bin/xlint/lint1/func.c:1.160	Fri Jun 30 21:39:54 2023
+++ src/usr.bin/xlint/lint1/func.c	Sat Jul  1 09:31:55 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: func.c,v 1.160 2023/06/30 21:39:54 rillig Exp $	*/
+/*	$NetBSD: func.c,v 1.161 2023/07/01 09:31:55 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: func.c,v 1.160 2023/06/30 21:39:54 rillig Exp $");
+__RCSID("$NetBSD: func.c,v 1.161 2023/07/01 09:31:55 rillig Exp $");
 #endif
 
 #include <stdlib.h>
@@ -533,7 +533,7 @@ check_case_label(tnode_t *tn, control_st
 	 * get the value of the expression and convert it
 	 * to the type of the switch expression
 	 */
-	v = constant(tn, true);
+	v = integer_constant(tn, true);
 	(void)memset(&nv, 0, sizeof(nv));
 	convert_constant(CASE, 0, cs->c_switch_type, &nv, v);
 	free(v);

Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.540 src/usr.bin/xlint/lint1/tree.c:1.541
--- src/usr.bin/xlint/lint1/tree.c:1.540	Sat Jul  1 09:21:31 2023
+++ src/usr.bin/xlint/lint1/tree.c	Sat Jul  1 09:31:55 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: tree.c,v 1.540 2023/07/01 09:21:31 rillig Exp $	*/
+/*	$NetBSD: tree.c,v 1.541 2023/07/01 09:31:55 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: tree.c,v 1.540 2023/07/01 09:21:31 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.541 2023/07/01 09:31:55 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -4328,7 +4328,7 @@ build_function_call(tnode_t *func, bool 
  * type, an error message is printed.
  */
 val_t *
-constant(tnode_t *tn, bool required)
+integer_constant(tnode_t *tn, bool required)
 {
 
 	if (tn != NULL)

Reply via email to