Index: lib/Basic/Targets/WebAssembly.h =================================================================== --- lib/Basic/Targets/WebAssembly.h +++ lib/Basic/Targets/WebAssembly.h @@ -52,6 +52,7 @@ SizeType = UnsignedLong; PtrDiffType = SignedLong; IntPtrType = SignedLong; + HasFloat16 = true; } protected: Index: lib/Frontend/InitPreprocessor.cpp =================================================================== --- lib/Frontend/InitPreprocessor.cpp +++ lib/Frontend/InitPreprocessor.cpp @@ -830,7 +830,8 @@ 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"); Index: test/Headers/float16.c =================================================================== --- test/Headers/float16.c +++ test/Headers/float16.c @@ -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=wasm64-unknown-unknown -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=wasm64-unknown-unknown -fsyntax-only -verify \ +// RUN: -std=c++11 -x c++ -ffreestanding %s // expected-no-diagnostics #define __STDC_WANT_IEC_60559_TYPES_EXT__