[compiler-rt] ed0bf87 - [builtins] Avoid enum name conflicts with fenv.h
Alex Richardson via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 9 10:50:36 PDT 2021
Author: Alex Richardson
Date: 2021-04-09T18:48:49+01:00
New Revision: ed0bf875a93e184c234510717b22fb4c8367ed82
URL: https://github.com/llvm/llvm-project/commit/ed0bf875a93e184c234510717b22fb4c8367ed82
DIFF: https://github.com/llvm/llvm-project/commit/ed0bf875a93e184c234510717b22fb4c8367ed82.diff
LOG: [builtins] Avoid enum name conflicts with fenv.h
After a follow-up change (D98332) this header can be included the same time
as fenv.h when running the tests. To avoid enum members conflicting with
the macros/enums defined in the host fenv.h, prefix them with CRT_.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D98333
Added:
Modified:
compiler-rt/lib/builtins/aarch64/fp_mode.c
compiler-rt/lib/builtins/arm/fp_mode.c
compiler-rt/lib/builtins/fp_add_impl.inc
compiler-rt/lib/builtins/fp_mode.c
compiler-rt/lib/builtins/fp_mode.h
compiler-rt/lib/builtins/i386/fp_mode.c
Removed:
################################################################################
diff --git a/compiler-rt/lib/builtins/aarch64/fp_mode.c b/compiler-rt/lib/builtins/aarch64/fp_mode.c
index 5a413689d2c8e..94c2ff3bb26d2 100644
--- a/compiler-rt/lib/builtins/aarch64/fp_mode.c
+++ b/compiler-rt/lib/builtins/aarch64/fp_mode.c
@@ -23,24 +23,25 @@
#ifndef __ARM_FP
// For soft float targets, allow changing rounding mode by overriding the weak
// __aarch64_fe_default_rmode symbol.
-FE_ROUND_MODE __attribute__((weak)) __aarch64_fe_default_rmode = FE_TONEAREST;
+CRT_FE_ROUND_MODE __attribute__((weak)) __aarch64_fe_default_rmode =
+ CRT_FE_TONEAREST;
#endif
-FE_ROUND_MODE __fe_getround() {
+CRT_FE_ROUND_MODE __fe_getround() {
#ifdef __ARM_FP
uint64_t fpcr;
__asm__ __volatile__("mrs %0, fpcr" : "=r" (fpcr));
fpcr = fpcr >> AARCH64_RMODE_SHIFT & AARCH64_RMODE_MASK;
switch (fpcr) {
case AARCH64_UPWARD:
- return FE_UPWARD;
+ return CRT_FE_UPWARD;
case AARCH64_DOWNWARD:
- return FE_DOWNWARD;
+ return CRT_FE_DOWNWARD;
case AARCH64_TOWARDZERO:
- return FE_TOWARDZERO;
+ return CRT_FE_TOWARDZERO;
case AARCH64_TONEAREST:
default:
- return FE_TONEAREST;
+ return CRT_FE_TONEAREST;
}
#else
return __aarch64_fe_default_rmode;
diff --git a/compiler-rt/lib/builtins/arm/fp_mode.c b/compiler-rt/lib/builtins/arm/fp_mode.c
index c0ca9095142e2..f356e0b1316b0 100644
--- a/compiler-rt/lib/builtins/arm/fp_mode.c
+++ b/compiler-rt/lib/builtins/arm/fp_mode.c
@@ -23,24 +23,25 @@
#ifndef __ARM_FP
// For soft float targets, allow changing rounding mode by overriding the weak
// __arm_fe_default_rmode symbol.
-FE_ROUND_MODE __attribute__((weak)) __arm_fe_default_rmode = FE_TONEAREST;
+CRT_FE_ROUND_MODE __attribute__((weak)) __arm_fe_default_rmode =
+ CRT_FE_TONEAREST;
#endif
-FE_ROUND_MODE __fe_getround() {
+CRT_FE_ROUND_MODE __fe_getround() {
#ifdef __ARM_FP
uint32_t fpscr;
__asm__ __volatile__("vmrs %0, fpscr" : "=r" (fpscr));
fpscr = fpscr >> ARM_RMODE_SHIFT & ARM_RMODE_MASK;
switch (fpscr) {
case ARM_UPWARD:
- return FE_UPWARD;
+ return CRT_FE_UPWARD;
case ARM_DOWNWARD:
- return FE_DOWNWARD;
+ return CRT_FE_DOWNWARD;
case ARM_TOWARDZERO:
- return FE_TOWARDZERO;
+ return CRT_FE_TOWARDZERO;
case ARM_TONEAREST:
default:
- return FE_TONEAREST;
+ return CRT_FE_TONEAREST;
}
#else
return __arm_fe_default_rmode;
diff --git a/compiler-rt/lib/builtins/fp_add_impl.inc b/compiler-rt/lib/builtins/fp_add_impl.inc
index ab63213490324..7133358df9bd2 100644
--- a/compiler-rt/lib/builtins/fp_add_impl.inc
+++ b/compiler-rt/lib/builtins/fp_add_impl.inc
@@ -151,19 +151,19 @@ static __inline fp_t __addXf3__(fp_t a, fp_t b) {
// Perform the final rounding. The result may overflow to infinity, but
// that is the correct result in that case.
switch (__fe_getround()) {
- case FE_TONEAREST:
+ case CRT_FE_TONEAREST:
if (roundGuardSticky > 0x4)
result++;
if (roundGuardSticky == 0x4)
result += result & 1;
break;
- case FE_DOWNWARD:
+ case CRT_FE_DOWNWARD:
if (resultSign && roundGuardSticky) result++;
break;
- case FE_UPWARD:
+ case CRT_FE_UPWARD:
if (!resultSign && roundGuardSticky) result++;
break;
- case FE_TOWARDZERO:
+ case CRT_FE_TOWARDZERO:
break;
}
if (roundGuardSticky)
diff --git a/compiler-rt/lib/builtins/fp_mode.c b/compiler-rt/lib/builtins/fp_mode.c
index c1b6c1f6b8a3d..b84df8abb27d4 100644
--- a/compiler-rt/lib/builtins/fp_mode.c
+++ b/compiler-rt/lib/builtins/fp_mode.c
@@ -15,9 +15,7 @@
#include "fp_mode.h"
// IEEE-754 default rounding (to nearest, ties to even).
-FE_ROUND_MODE __fe_getround() {
- return FE_TONEAREST;
-}
+CRT_FE_ROUND_MODE __fe_getround() { return CRT_FE_TONEAREST; }
int __fe_raise_inexact() {
return 0;
diff --git a/compiler-rt/lib/builtins/fp_mode.h b/compiler-rt/lib/builtins/fp_mode.h
index 4ba682c384f2d..26a3f4d10942c 100644
--- a/compiler-rt/lib/builtins/fp_mode.h
+++ b/compiler-rt/lib/builtins/fp_mode.h
@@ -17,13 +17,13 @@
#define FP_MODE
typedef enum {
- FE_TONEAREST,
- FE_DOWNWARD,
- FE_UPWARD,
- FE_TOWARDZERO
-} FE_ROUND_MODE;
+ CRT_FE_TONEAREST,
+ CRT_FE_DOWNWARD,
+ CRT_FE_UPWARD,
+ CRT_FE_TOWARDZERO
+} CRT_FE_ROUND_MODE;
-FE_ROUND_MODE __fe_getround(void);
+CRT_FE_ROUND_MODE __fe_getround(void);
int __fe_raise_inexact(void);
#endif // FP_MODE_H
diff --git a/compiler-rt/lib/builtins/i386/fp_mode.c b/compiler-rt/lib/builtins/i386/fp_mode.c
index 62ab771222c09..80e272e4c9a3e 100644
--- a/compiler-rt/lib/builtins/i386/fp_mode.c
+++ b/compiler-rt/lib/builtins/i386/fp_mode.c
@@ -14,22 +14,22 @@
#define X87_TOWARDZERO 0x0c00
#define X87_RMODE_MASK (X87_TONEAREST | X87_UPWARD | X87_DOWNWARD | X87_TOWARDZERO)
-FE_ROUND_MODE __fe_getround() {
+CRT_FE_ROUND_MODE __fe_getround() {
// Assume that the rounding mode state for the fpu agrees with the SSE unit.
unsigned short cw;
__asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
switch (cw & X87_RMODE_MASK) {
case X87_TONEAREST:
- return FE_TONEAREST;
+ return CRT_FE_TONEAREST;
case X87_DOWNWARD:
- return FE_DOWNWARD;
+ return CRT_FE_DOWNWARD;
case X87_UPWARD:
- return FE_UPWARD;
+ return CRT_FE_UPWARD;
case X87_TOWARDZERO:
- return FE_TOWARDZERO;
+ return CRT_FE_TOWARDZERO;
}
- return FE_TONEAREST;
+ return CRT_FE_TONEAREST;
}
int __fe_raise_inexact() {
More information about the llvm-commits
mailing list