1 // RUN: %clang_cc1 -verify -std=gnu++11 %s
2 // RUN: %clang_cc1 -verify -std=c++11 %s
3 // RUN: %clang_cc1 -triple powerpc64-linux -verify -std=c++11 %s
4 // RUN: %clang_cc1 -triple powerpc64-ibm-aix -target-feature +float128 -verify -std=c++11 %s
5 // RUN: %clang_cc1 -triple i686-windows-gnu -verify -std=c++11 %s
6 // RUN: %clang_cc1 -triple x86_64-windows-gnu -verify -std=c++11 %s
7 // RUN: %clang_cc1 -triple x86_64-windows-msvc -verify -std=c++11 %s
9 #if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
11 #if defined(__powerpc__)
12 template <typename
> struct __is_float128
{ static constexpr bool value
= false; };
13 template <> struct __is_float128
<__float128
> { static constexpr bool value
= true; };
14 static_assert(__is_float128
<__ieee128
>::value
, "__ieee128 aliases to __float128");
18 template<typename
> struct __is_floating_point_helper
{};
19 template<> struct __is_floating_point_helper
<__float128
> {};
20 int g(int x
, __float128
*y
) {
24 // expected-no-error {{__float128 is not supported on this target}}
26 #if !defined(__STRICT_ANSI__)
27 __float128 f
; // expected-error {{__float128 is not supported on this target}}
28 // But this should work:
29 template<typename
> struct __is_floating_point_helper
{};
30 template<> struct __is_floating_point_helper
<__float128
> {}; // expected-error {{__float128 is not supported on this target}}
32 // FIXME: This could have a better diag.
33 int g(int x
, __float128
*y
) { // expected-error {{__float128 is not supported on this target}}
38 __float128 f
; // expected-error {{__float128 is not supported on this target}}
39 template<typename
> struct __is_floating_point_helper
{};
40 template<> struct __is_floating_point_helper
<__float128
> {}; // expected-error {{__float128 is not supported on this target}}
42 int g(int x
, __float128
*y
) { // expected-error {{__float128 is not supported on this target}}
51 template <> struct __is_floating_point_helper
<__ibm128
> {};
52 int w(int x
, __ibm128
*y
) {
55 // expected-no-error {{__ibm128 is not supported on this target}}
57 __ibm128 i
; // expected-error {{__ibm128 is not supported on this target}}
58 template <> struct __is_floating_point_helper
<__ibm128
> {}; // expected-error {{__ibm128 is not supported on this target}}
59 int w(int x
, __ibm128
*y
) { // expected-error {{__ibm128 is not supported on this target}}