Module Name: src
Committed By: rillig
Date: Tue Apr 11 19:40:05 UTC 2023
Modified Files:
src/usr.bin/xlint/lint1: tree.c
Log Message:
lint: fix converting a complex floating-point constant
The complex '+' in msg_142 line 27 led to an invalid floating point
value when converting from 'double' to '_Complex double'.
To generate a diff of this commit:
cvs rdiff -u -r1.510 -r1.511 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/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.510 src/usr.bin/xlint/lint1/tree.c:1.511
--- src/usr.bin/xlint/lint1/tree.c:1.510 Tue Apr 11 19:07:08 2023
+++ src/usr.bin/xlint/lint1/tree.c Tue Apr 11 19:40:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: tree.c,v 1.510 2023/04/11 19:07:08 rillig Exp $ */
+/* $NetBSD: tree.c,v 1.511 2023/04/11 19:40:04 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.510 2023/04/11 19:07:08 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.511 2023/04/11 19:40:04 rillig Exp $");
#endif
#include <float.h>
@@ -3646,11 +3646,11 @@ convert_constant_floating(op_t op, int a
v->v_ldbl = v->v_ldbl > 0 ? max : min;
}
- if (nt == FLOAT) {
+ if (nt == FLOAT || nt == FCOMPLEX) {
nv->v_ldbl = (float)v->v_ldbl;
- } else if (nt == DOUBLE) {
+ } else if (nt == DOUBLE || nt == DCOMPLEX) {
nv->v_ldbl = (double)v->v_ldbl;
- } else if (nt == LDOUBLE) {
+ } else if (nt == LDOUBLE || nt == LCOMPLEX) {
nv->v_ldbl = v->v_ldbl;
} else {
nv->v_quad = (int64_t)v->v_ldbl;