Module Name: src
Committed By: rillig
Date: Sun Jul 4 13:14:54 UTC 2021
Modified Files:
src/distrib/sets/lists/tests: mi
src/tests/usr.bin/xlint/lint1: Makefile d_cast_lhs.c
src/usr.bin/xlint/lint1: tree.c
Added Files:
src/tests/usr.bin/xlint/lint1: d_cast_lhs.exp
Log Message:
lint: remove remaining support for lvalue casts
These had been GCC extensions until GCC 3.4, they were removed in GCC
4.0.
To generate a diff of this commit:
cvs rdiff -u -r1.1074 -r1.1075 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.77 -r1.78 src/tests/usr.bin/xlint/lint1/Makefile
cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/d_cast_lhs.c
cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/xlint/lint1/d_cast_lhs.exp
cvs rdiff -u -r1.307 -r1.308 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/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1074 src/distrib/sets/lists/tests/mi:1.1075
--- src/distrib/sets/lists/tests/mi:1.1074 Sun Jul 4 08:19:05 2021
+++ src/distrib/sets/lists/tests/mi Sun Jul 4 13:14:53 2021
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1074 2021/07/04 08:19:05 rillig Exp $
+# $NetBSD: mi,v 1.1075 2021/07/04 13:14:53 rillig Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -6151,6 +6151,7 @@
./usr/tests/usr.bin/xlint/lint1/d_cast_init.c tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/xlint/lint1/d_cast_init2.c tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/xlint/lint1/d_cast_lhs.c tests-usr.bin-tests compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/d_cast_lhs.exp tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/xlint/lint1/d_cast_typeof.c tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/xlint/lint1/d_compound_literals1.c tests-usr.bin-tests compattestfile,atf
./usr/tests/usr.bin/xlint/lint1/d_compound_literals2.c tests-usr.bin-tests compattestfile,atf
Index: src/tests/usr.bin/xlint/lint1/Makefile
diff -u src/tests/usr.bin/xlint/lint1/Makefile:1.77 src/tests/usr.bin/xlint/lint1/Makefile:1.78
--- src/tests/usr.bin/xlint/lint1/Makefile:1.77 Sun Jul 4 08:50:26 2021
+++ src/tests/usr.bin/xlint/lint1/Makefile Sun Jul 4 13:14:54 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.77 2021/07/04 08:50:26 rillig Exp $
+# $NetBSD: Makefile,v 1.78 2021/07/04 13:14:54 rillig Exp $
NOMAN= # defined
MAX_MESSAGE= 345 # see lint1/err.c
@@ -55,6 +55,7 @@ FILES+= d_cast_fun_array_param.c
FILES+= d_cast_init.c
FILES+= d_cast_init2.c
FILES+= d_cast_lhs.c
+FILES+= d_cast_lhs.exp
FILES+= d_cast_typeof.c
FILES+= d_compound_literals1.c
FILES+= d_compound_literals2.c
Index: src/tests/usr.bin/xlint/lint1/d_cast_lhs.c
diff -u src/tests/usr.bin/xlint/lint1/d_cast_lhs.c:1.4 src/tests/usr.bin/xlint/lint1/d_cast_lhs.c:1.5
--- src/tests/usr.bin/xlint/lint1/d_cast_lhs.c:1.4 Sat Mar 27 13:59:18 2021
+++ src/tests/usr.bin/xlint/lint1/d_cast_lhs.c Sun Jul 4 13:14:54 2021
@@ -1,18 +1,29 @@
-/* $NetBSD: d_cast_lhs.c,v 1.4 2021/03/27 13:59:18 rillig Exp $ */
+/* $NetBSD: d_cast_lhs.c,v 1.5 2021/07/04 13:14:54 rillig Exp $ */
# 3 "d_cast_lhs.c"
/*
- * pointer casts are valid lhs lvalues
+ * Pointer casts had been valid lvalues in GCC before 4.0.
*
- * XXX: C99 6.5.4 "Cast operators" footnote 85 says "A cast does not yield an
- * lvalue". It does not mention any exceptional rule for pointers.
+ * https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Lvalues.html#Lvalues
+ *
+ * C99 6.5.4 "Cast operators" footnote 85 says "A cast does not yield an
+ * lvalue".
*/
-struct sockaddr {
+struct str {
+ int member;
};
+void sink(const void *);
+
+/* ARGSUSED */
void
-foo()
+foo(void *p)
{
- unsigned long p = 6;
- ((struct sockaddr *)p) = 0;
+ /* expect+2: error: a cast does not yield an lvalue [163] */
+ /* expect+1: error: left operand of '=' must be lvalue [114] */
+ ((struct str *)p) = 0;
+
+ /* expect+2: error: a cast does not yield an lvalue [163] */
+ /* expect+1: error: operand of '&' must be lvalue [114] */
+ sink(&(const void *)p);
}
Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.307 src/usr.bin/xlint/lint1/tree.c:1.308
--- src/usr.bin/xlint/lint1/tree.c:1.307 Sun Jul 4 12:24:38 2021
+++ src/usr.bin/xlint/lint1/tree.c Sun Jul 4 13:14:54 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: tree.c,v 1.307 2021/07/04 12:24:38 rillig Exp $ */
+/* $NetBSD: tree.c,v 1.308 2021/07/04 13:14:54 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.307 2021/07/04 12:24:38 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.308 2021/07/04 13:14:54 rillig Exp $");
#endif
#include <float.h>
@@ -783,8 +783,6 @@ typeok_address(const mod_t *mp,
} else if (!tn->tn_lvalue) {
if (tn->tn_op == CVT && tn->tn_cast &&
tn->tn_left->tn_op == LOAD) {
- if (tn->tn_type->t_tspec == PTR)
- return true;
/* a cast does not yield an lvalue */
error(163);
}
@@ -1073,8 +1071,6 @@ typeok_assign(const mod_t *mp, const tno
if (!ln->tn_lvalue) {
if (ln->tn_op == CVT && ln->tn_cast &&
ln->tn_left->tn_op == LOAD) {
- if (ln->tn_type->t_tspec == PTR)
- return true;
/* a cast does not yield an lvalue */
error(163);
}
Added files:
Index: src/tests/usr.bin/xlint/lint1/d_cast_lhs.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/d_cast_lhs.exp:1.1
--- /dev/null Sun Jul 4 13:14:54 2021
+++ src/tests/usr.bin/xlint/lint1/d_cast_lhs.exp Sun Jul 4 13:14:54 2021
@@ -0,0 +1,4 @@
+d_cast_lhs.c(24): error: a cast does not yield an lvalue [163]
+d_cast_lhs.c(24): error: left operand of '=' must be lvalue [114]
+d_cast_lhs.c(28): error: a cast does not yield an lvalue [163]
+d_cast_lhs.c(28): error: operand of '&' must be lvalue [114]