Module Name:    src
Committed By:   rillig
Date:           Sun Aug 22 20:14:24 UTC 2021

Modified Files:
        src/tests/usr.bin/xlint/lint1: expr_fold.c expr_fold.exp

Log Message:
tests/lint: demonstrate wrong folding of 64-bit numbers


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/expr_fold.c \
    src/tests/usr.bin/xlint/lint1/expr_fold.exp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/usr.bin/xlint/lint1/expr_fold.c
diff -u src/tests/usr.bin/xlint/lint1/expr_fold.c:1.2 src/tests/usr.bin/xlint/lint1/expr_fold.c:1.3
--- src/tests/usr.bin/xlint/lint1/expr_fold.c:1.2	Thu Aug 19 20:48:47 2021
+++ src/tests/usr.bin/xlint/lint1/expr_fold.c	Sun Aug 22 20:14:24 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: expr_fold.c,v 1.2 2021/08/19 20:48:47 rillig Exp $	*/
+/*	$NetBSD: expr_fold.c,v 1.3 2021/08/22 20:14:24 rillig Exp $	*/
 # 3 "expr_fold.c"
 
 /*
@@ -285,3 +285,22 @@ fold_bitor(void)
 	take_bool(1 | 3);
 	take_bool(3 | 1);
 }
+
+/*
+ * The following expression originated in vndcompress.c 1.29 from 2017-07-29,
+ * where line 310 contained a seemingly harmless compile-time assertion that
+ * expanded to a real monster expression.
+ *
+ * __CTASSERT(MUL_OK(uint64_t, MAX_N_BLOCKS, MAX_BLOCKSIZE));
+ */
+struct ctassert5_struct {
+	unsigned int member:
+	    /*CONSTCOND*/
+	    0xfffffffeU
+	    <=
+		((1ULL << 63) + 1 < 1 ? ~(1ULL << 63) : ~0ULL) / 0xfffffe00U
+		? 1
+		/* FIXME: the above '(1ULL << 63) + 1' is wrong */
+		/* expect+1: error: illegal bit-field size: 255 [36] */
+		: -1;
+};
Index: src/tests/usr.bin/xlint/lint1/expr_fold.exp
diff -u src/tests/usr.bin/xlint/lint1/expr_fold.exp:1.2 src/tests/usr.bin/xlint/lint1/expr_fold.exp:1.3
--- src/tests/usr.bin/xlint/lint1/expr_fold.exp:1.2	Thu Aug 19 20:48:47 2021
+++ src/tests/usr.bin/xlint/lint1/expr_fold.exp	Sun Aug 22 20:14:24 2021
@@ -51,3 +51,4 @@ expr_fold.c(204): warning: integer overf
 expr_fold.c(207): warning: integer overflow detected, op << [141]
 expr_fold.c(211): warning: shift amount 104 is greater than bit-size 32 of 'unsigned int' [122]
 expr_fold.c(223): warning: shift amount 104 is greater than bit-size 32 of 'int' [122]
+expr_fold.c(305): error: illegal bit-field size: 255 [36]

Reply via email to