Index: clang/include/clang/Basic/TokenKinds.def =================================================================== --- clang/include/clang/Basic/TokenKinds.def +++ clang/include/clang/Basic/TokenKinds.def @@ -435,6 +435,7 @@ TYPE_TRAIT_2(__builtin_types_compatible_p, TypeCompatible, KEYNOCXX) KEYWORD(__builtin_va_arg , KEYALL) KEYWORD(__extension__ , KEYALL) +ALIAS("__ieee128", __float128 , KEYALL) KEYWORD(__float128 , KEYALL) KEYWORD(__imag , KEYALL) KEYWORD(__int128 , KEYALL) Index: clang/test/Sema/128bitfloat.cpp =================================================================== --- clang/test/Sema/128bitfloat.cpp +++ clang/test/Sema/128bitfloat.cpp @@ -6,6 +6,11 @@ // RUN: %clang_cc1 -triple x86_64-windows-msvc -verify -std=c++11 %s #if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) + +template struct __is_float128 { static constexpr bool value = false; }; +template <> struct __is_float128<__float128> { static constexpr bool value = true; }; +static_assert(__is_float128<__ieee128>::value, "__ieee128 aliases to __float128"); + __float128 f; template struct __is_floating_point_helper {}; template<> struct __is_floating_point_helper<__float128> {};