Author: nemanjai Date: Wed Feb 20 12:27:33 2019 New Revision: 354512 URL: http://llvm.org/viewvc/llvm-project?rev=354512&view=rev Log: Make predefined FLT16 macros conditional on support for the type
We unconditionally predefine these macros. However, they may be used to determine if the type is supported. In that case, there are unnecessary failures to compile the code. This is the proposed fix for https://bugs.llvm.org/show_bug.cgi?id=40559 Differential revision: https://reviews.llvm.org/D57577 Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp cfe/trunk/test/Headers/float16.c cfe/trunk/test/Preprocessor/init.c Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=354512&r1=354511&r2=354512&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original) +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Wed Feb 20 12:27:33 2019 @@ -830,7 +830,8 @@ static void InitializePredefinedMacros(c DefineFmt("__UINTPTR", TI.getUIntPtrType(), TI, Builder); DefineTypeWidth("__UINTPTR_WIDTH__", TI.getUIntPtrType(), TI, Builder); - DefineFloatMacros(Builder, "FLT16", &TI.getHalfFormat(), "F16"); + if (TI.hasFloat16Type()) + DefineFloatMacros(Builder, "FLT16", &TI.getHalfFormat(), "F16"); DefineFloatMacros(Builder, "FLT", &TI.getFloatFormat(), "F"); DefineFloatMacros(Builder, "DBL", &TI.getDoubleFormat(), ""); DefineFloatMacros(Builder, "LDBL", &TI.getLongDoubleFormat(), "L"); Modified: cfe/trunk/test/Headers/float16.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/float16.c?rev=354512&r1=354511&r2=354512&view=diff ============================================================================== --- cfe/trunk/test/Headers/float16.c (original) +++ cfe/trunk/test/Headers/float16.c Wed Feb 20 12:27:33 2019 @@ -1,7 +1,11 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -std=c89 -ffreestanding %s -// RUN: %clang_cc1 -fsyntax-only -verify -std=c99 -ffreestanding %s -// RUN: %clang_cc1 -fsyntax-only -verify -std=c11 -ffreestanding %s -// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -x c++ -ffreestanding %s +// RUN: %clang_cc1 -triple=aarch64-none-none -fsyntax-only -verify -std=c89 \ +// RUN: -ffreestanding %s +// RUN: %clang_cc1 -triple=aarch64-none-none -fsyntax-only -verify \ +// RUN: -std=c99 -ffreestanding %s +// RUN: %clang_cc1 -triple=aarch64-none-none -fsyntax-only -verify -std=c11 \ +// RUN: -ffreestanding %s +// RUN: %clang_cc1 -triple=aarch64-none-none -fsyntax-only -verify \ +// RUN: -std=c++11 -x c++ -ffreestanding %s // expected-no-diagnostics #define __STDC_WANT_IEC_60559_TYPES_EXT__ Modified: cfe/trunk/test/Preprocessor/init.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/init.c?rev=354512&r1=354511&r2=354512&view=diff ============================================================================== --- cfe/trunk/test/Preprocessor/init.c (original) +++ cfe/trunk/test/Preprocessor/init.c Wed Feb 20 12:27:33 2019 @@ -9166,20 +9166,20 @@ // WEBASSEMBLY-NOT:#define __ELF__ // WEBASSEMBLY-NEXT:#define __FINITE_MATH_ONLY__ 0 // WEBASSEMBLY-NEXT:#define __FLOAT128__ 1 -// WEBASSEMBLY-NEXT:#define __FLT16_DECIMAL_DIG__ 5 -// WEBASSEMBLY-NEXT:#define __FLT16_DENORM_MIN__ 5.9604644775390625e-8F16 -// WEBASSEMBLY-NEXT:#define __FLT16_DIG__ 3 -// WEBASSEMBLY-NEXT:#define __FLT16_EPSILON__ 9.765625e-4F16 -// WEBASSEMBLY-NEXT:#define __FLT16_HAS_DENORM__ 1 -// WEBASSEMBLY-NEXT:#define __FLT16_HAS_INFINITY__ 1 -// WEBASSEMBLY-NEXT:#define __FLT16_HAS_QUIET_NAN__ 1 -// WEBASSEMBLY-NEXT:#define __FLT16_MANT_DIG__ 11 -// WEBASSEMBLY-NEXT:#define __FLT16_MAX_10_EXP__ 4 -// WEBASSEMBLY-NEXT:#define __FLT16_MAX_EXP__ 15 -// WEBASSEMBLY-NEXT:#define __FLT16_MAX__ 6.5504e+4F16 -// WEBASSEMBLY-NEXT:#define __FLT16_MIN_10_EXP__ (-13) -// WEBASSEMBLY-NEXT:#define __FLT16_MIN_EXP__ (-14) -// WEBASSEMBLY-NEXT:#define __FLT16_MIN__ 6.103515625e-5F16 +// WEBASSEMBLY-NOT:#define __FLT16_DECIMAL_DIG__ +// WEBASSEMBLY-NOT:#define __FLT16_DENORM_MIN__ +// WEBASSEMBLY-NOT:#define __FLT16_DIG__ +// WEBASSEMBLY-NOT:#define __FLT16_EPSILON__ +// WEBASSEMBLY-NOT:#define __FLT16_HAS_DENORM__ +// WEBASSEMBLY-NOT:#define __FLT16_HAS_INFINITY__ +// WEBASSEMBLY-NOT:#define __FLT16_HAS_QUIET_NAN__ +// WEBASSEMBLY-NOT:#define __FLT16_MANT_DIG__ +// WEBASSEMBLY-NOT:#define __FLT16_MAX_10_EXP__ +// WEBASSEMBLY-NOT:#define __FLT16_MAX_EXP__ +// WEBASSEMBLY-NOT:#define __FLT16_MAX__ +// WEBASSEMBLY-NOT:#define __FLT16_MIN_10_EXP__ +// WEBASSEMBLY-NOT:#define __FLT16_MIN_EXP__ +// WEBASSEMBLY-NOT:#define __FLT16_MIN__ // WEBASSEMBLY-NEXT:#define __FLT_DECIMAL_DIG__ 9 // WEBASSEMBLY-NEXT:#define __FLT_DENORM_MIN__ 1.40129846e-45F // WEBASSEMBLY-NEXT:#define __FLT_DIG__ 6 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits