labrinea created this revision.
labrinea added reviewers: rengolin, richard.barton.arm.
labrinea added a subscriber: cfe-commits.
Herald added subscribers: rengolin, aemerson.
Added the remaining macros and corresponding regression tests.
http://reviews.llvm.org/D12633
Files:
lib/Basic/Targets.cpp
test/Preprocessor/aarch64-target-features.c
test/Preprocessor/arm-target-features.c
Index: test/Preprocessor/arm-target-features.c
===================================================================
--- test/Preprocessor/arm-target-features.c
+++ test/Preprocessor/arm-target-features.c
@@ -32,6 +32,7 @@
// CHECK-V8-BAREHF: __ARM_FEATURE_DIRECTED_ROUNDING 1
// CHECK-V8-BAREHF: __ARM_FEATURE_NUMERIC_MAXMIN 1
// CHECK-V8-BAREHF: __ARM_NEON__ 1
+// CHECK-V8-BAREHF: __ARM_PCS_VFP 1
// CHECK-V8-BAREHF: __VFP_FP__ 1
// RUN: %clang -target armv8a -mfloat-abi=hard -mfpu=fp-armv8 -x c -E -dM %s | FileCheck --check-prefix=CHECK-V8-BAREHF-FP %s
@@ -85,8 +86,20 @@
// THUMBV8A-EABI:#define __ARM_ARCH_EXT_IDIV__ 1
// RUN: %clang -target arm-none-linux-gnu -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-DEFS %s
+// CHECK-DEFS:#define __ARM_FP_FENV_ROUNDING 1
+// CHECK-DEFS:#define __ARM_PCS 1
// CHECK-DEFS:#define __ARM_SIZEOF_MINIMAL_ENUM 4
// CHECK-DEFS:#define __ARM_SIZEOF_WCHAR_T 4
+// CHECK-DEFS:#define __STDC_IEC_559__ 1
+
+// RUN: %clang -target arm-none-linux-gnu -std=c99 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-C99 %s
+// CHECK-C99: __SUPPORT_SNAN__ 1
+
+// RUN: %clang -target arm-none-linux-gnu -std=c11 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-C11 %s
+// CHECK-C11-NOT: __SUPPORT_SNAN__ 1
+
+// RUN: %clang -target arm-none-linux-gnu -ffast-math -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-FASTMATH %s
+// CHECK-FASTMATH: __ARM_FP_FAST 1
// RUN: %clang -target arm-none-linux-gnu -fshort-wchar -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-SHORTWCHAR %s
// CHECK-SHORTWCHAR:#define __ARM_SIZEOF_WCHAR_T 2
Index: test/Preprocessor/aarch64-target-features.c
===================================================================
--- test/Preprocessor/aarch64-target-features.c
+++ test/Preprocessor/aarch64-target-features.c
@@ -34,12 +34,23 @@
// CHECK: __ARM_NEON 1
// CHECK: __ARM_NEON_FP 0xE
// CHECK: __ARM_PCS_AAPCS64 1
+// CHECK-NOT: __ARM_PCS 1
+// CHECK-NOT: __ARM_PCS_VFP 1
// CHECK-NOT: __ARM_SIZEOF_MINIMAL_ENUM 1
// CHECK-NOT: __ARM_SIZEOF_WCHAR_T 2
+// CHECK: __STDC_IEC_559__ 1
// RUN: %clang -target aarch64_be-eabi -x c -E -dM %s -o - | FileCheck %s -check-prefix CHECK-BIGENDIAN
// CHECK-BIGENDIAN: __ARM_BIG_ENDIAN 1
+// RUN: %clang -target aarch64-none-linux-gnu -std=c99 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-C99 %s
+// RUN: %clang -target arm64-none-linux-gnu -std=c99 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-C99 %s
+// CHECK-C99: __SUPPORT_SNAN__ 1
+
+// RUN: %clang -target aarch64-none-linux-gnu -std=c11 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-C11 %s
+// RUN: %clang -target arm64-none-linux-gnu -std=c11 -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-C11 %s
+// CHECK-C11-NOT: __SUPPORT_SNAN__ 1
+
// RUN: %clang -target aarch64-none-linux-gnu -march=armv8-a+crypto -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRYPTO %s
// RUN: %clang -target arm64-none-linux-gnu -march=armv8-a+crypto -x c -E -dM %s -o - | FileCheck --check-prefix=CHECK-CRYPTO %s
// CHECK-CRYPTO: __ARM_FEATURE_CRYPTO 1
Index: lib/Basic/Targets.cpp
===================================================================
--- lib/Basic/Targets.cpp
+++ lib/Basic/Targets.cpp
@@ -4776,6 +4776,18 @@
// ACLE 6.4.6 Q (saturation) flag
if (hasDSP || hasSAT)
Builder.defineMacro("__ARM_FEATURE_QBIT", "1");
+
+ // ACLE 6.6 Floating-point model
+ if (Opts.FastMath || Opts.FiniteMathOnly)
+ Builder.defineMacro("__ARM_FP_FAST", "1");
+
+ if (Opts.C99 && !Opts.Freestanding) {
+ Builder.defineMacro("__ARM_FP_FENV_ROUNDING", "1");
+ Builder.defineMacro("__STDC_IEC_559__", "1");
+ }
+
+ if (!Opts.C11)
+ Builder.defineMacro("__SUPPORT_SNAN__", "1");
}
void getTargetBuiltins(const Builtin::Info *&Records,
@@ -5229,7 +5241,7 @@
Builder.defineMacro("__ARM_ARCH_PROFILE", "'A'");
Builder.defineMacro("__ARM_64BIT_STATE", "1");
- Builder.defineMacro("__ARM_PCS_AAPCS64");
+ Builder.defineMacro("__ARM_PCS_AAPCS64", "1");
Builder.defineMacro("__ARM_ARCH_ISA_A64", "1");
Builder.defineMacro("__ARM_FEATURE_CLZ", "1");
@@ -5250,11 +5262,17 @@
Builder.defineMacro("__ARM_FP16_FORMAT_IEEE", "1");
Builder.defineMacro("__ARM_FP16_ARGS", "1");
+ // ACLE 6.6 Floating-point model
if (Opts.FastMath || Opts.FiniteMathOnly)
- Builder.defineMacro("__ARM_FP_FAST");
+ Builder.defineMacro("__ARM_FP_FAST", "1");
+
+ if (Opts.C99 && !Opts.Freestanding) {
+ Builder.defineMacro("__ARM_FP_FENV_ROUNDING", "1");
+ Builder.defineMacro("__STDC_IEC_559__", "1");
+ }
- if (Opts.C99 && !Opts.Freestanding)
- Builder.defineMacro("__ARM_FP_FENV_ROUNDING");
+ if (!Opts.C11)
+ Builder.defineMacro("__SUPPORT_SNAN__", "1");
Builder.defineMacro("__ARM_SIZEOF_WCHAR_T", Opts.ShortWChar ? "2" : "4");
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits