[compiler-rt] [MSVC] fix the build (PR #69634)
nicole mazzuca via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 19 12:47:13 PDT 2023
https://github.com/strega-nil created https://github.com/llvm/llvm-project/pull/69634
MSVC in C mode apparently doesn't consider `const int` to be sufficiently constant expression
This was broken in #66903.
>From 99b45599afd7b59ab4a1fc5833211d4fb7e4ce4f Mon Sep 17 00:00:00 2001
From: Nicole Mazzuca <nicole at strega-nil.co>
Date: Thu, 19 Oct 2023 12:45:56 -0700
Subject: [PATCH] [MSVC] fix the build
MSVC in C mode apparently doesn't consider `const int` to be
sufficiently constant expression
---
compiler-rt/lib/builtins/int_to_fp.h | 5 ++++-
compiler-rt/lib/builtins/int_to_fp_impl.inc | 11 ++++++++---
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/compiler-rt/lib/builtins/int_to_fp.h b/compiler-rt/lib/builtins/int_to_fp.h
index 1adce097d7a8568..cbce49eed140c4c 100644
--- a/compiler-rt/lib/builtins/int_to_fp.h
+++ b/compiler-rt/lib/builtins/int_to_fp.h
@@ -44,7 +44,10 @@ static __inline int clzSrcT(usrc_t x) { return __clzti2(x); }
typedef float dst_t;
typedef uint32_t dst_rep_t;
#define DST_REP_C UINT32_C
-static const int dstSigBits = 23;
+
+enum {
+ dstSigBits = 23,
+};
#elif defined DST_DOUBLE
typedef double dst_t;
diff --git a/compiler-rt/lib/builtins/int_to_fp_impl.inc b/compiler-rt/lib/builtins/int_to_fp_impl.inc
index 263ae85d3283ca0..51f76fd76d80350 100644
--- a/compiler-rt/lib/builtins/int_to_fp_impl.inc
+++ b/compiler-rt/lib/builtins/int_to_fp_impl.inc
@@ -17,10 +17,15 @@
static __inline dst_t __floatXiYf__(src_t a) {
if (a == 0)
return 0.0;
- const int dstMantDig = dstSigBits + 1;
- const int srcBits = sizeof(src_t) * CHAR_BIT;
- const int srcIsSigned = ((src_t)-1) < 0;
+
+ enum {
+ dstMantDig = dstSigBits + 1,
+ srcBits = sizeof(src_t) * CHAR_BIT,
+ srcIsSigned = ((src_t)-1) < 0,
+ };
+
const src_t s = srcIsSigned ? a >> (srcBits - 1) : 0;
+
a = (usrc_t)(a ^ s) - s;
int sd = srcBits - clzSrcT(a); // number of significant digits
int e = sd - 1; // exponent
More information about the llvm-commits
mailing list