1cac18add73d095eaab600aefe27ea7174aec4922Nico Weber// RUN: %clang_cc1 -fsyntax-only -verify -std=gnu++11 %s
2cac18add73d095eaab600aefe27ea7174aec4922Nico Weber// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
3cac18add73d095eaab600aefe27ea7174aec4922Nico Weber
4cac18add73d095eaab600aefe27ea7174aec4922Nico Weber#if !defined(__STRICT_ANSI__)
59b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber__float128 f;  // expected-error {{support for type '__float128' is not yet implemented}}
6cac18add73d095eaab600aefe27ea7174aec4922Nico Weber// But this should work:
7cac18add73d095eaab600aefe27ea7174aec4922Nico Webertemplate<typename> struct __is_floating_point_helper {};
8cac18add73d095eaab600aefe27ea7174aec4922Nico Webertemplate<> struct __is_floating_point_helper<__float128> {};
99b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber
109b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber// FIXME: This could have a better diag.
119b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Webervoid g(int x, __float128 *y) {
129b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber  x + *y;  // expected-error {{invalid operands to binary expression ('int' and '__float128')}}
139b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber}
149b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber
15cac18add73d095eaab600aefe27ea7174aec4922Nico Weber#else
16cac18add73d095eaab600aefe27ea7174aec4922Nico Weber__float128 f;  // expected-error {{unknown type name '__float128'}}
17cac18add73d095eaab600aefe27ea7174aec4922Nico Webertemplate<typename> struct __is_floating_point_helper {};
18cac18add73d095eaab600aefe27ea7174aec4922Nico Webertemplate<> struct __is_floating_point_helper<__float128> {};  // expected-error {{use of undeclared identifier '__float128'}}
199b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber
209b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Webervoid g(int x, __float128 *y) {  // expected-error {{unknown type name '__float128'}}
219b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber  x + *y;
229b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber}
239b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98Nico Weber
24cac18add73d095eaab600aefe27ea7174aec4922Nico Weber#endif
25