blob: 45e1cd8d57ff7c5185c6a152edea395d0e57456d [file] [log] [blame]
David Majnemer5055dfc2015-07-26 09:02:26 +00001// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-apple-darwin9 %s -DHAVE
2// RUN: %clang_cc1 -fsyntax-only -verify -triple i686-linux-gnu %s -DHAVE_NOT
Richard Smithe6a56db2012-11-29 05:41:51 +00003
4#ifdef HAVE
Eli Friedman1efaaea2009-02-13 02:31:07 +00005typedef int i128 __attribute__((__mode__(TI)));
6typedef unsigned u128 __attribute__((__mode__(TI)));
7
8int a[((i128)-1 ^ (i128)-2) == 1 ? 1 : -1];
9int a[(u128)-1 > 1LL ? 1 : -1];
Richard Smithe6a56db2012-11-29 05:41:51 +000010int a[__SIZEOF_INT128__ == 16 ? 1 : -1];
Anders Carlsson69999d92009-11-09 17:34:18 +000011
12// PR5435
13__uint128_t b = (__uint128_t)-1;
Richard Smithf016bbc2012-04-04 06:24:32 +000014
15// PR11916: Support for libstdc++ 4.7
16__int128 i = (__int128)0;
17unsigned __int128 u = (unsigned __int128)-1;
Stephen Canonfdc6c1a2012-05-03 22:49:43 +000018
Aaron Ballman31f42312014-07-24 14:51:23 +000019long long SignedTooBig = 123456789012345678901234567890; // expected-error {{integer literal is too large to be represented in any integer type}}
Aaron Ballman31f42312014-07-24 14:51:23 +000020unsigned long long UnsignedTooBig = 123456789012345678901234567890; // expected-error {{integer literal is too large to be represented in any integer type}}
Dmitri Gribenkoe4a5a902012-08-17 00:08:38 +000021
22void MPI_Send(void *buf, int datatype) __attribute__(( pointer_with_type_tag(mpi,1,2) ));
23
Dmitri Gribenkoe4a5a902012-08-17 00:08:38 +000024static const int mpi_int __attribute__(( type_tag_for_datatype(mpi,int) )) = 10;
25
26void test(int *buf)
27{
Dmitri Gribenkoe4a5a902012-08-17 00:08:38 +000028}
Richard Smithe6a56db2012-11-29 05:41:51 +000029#else
Dmitri Gribenkoe4a5a902012-08-17 00:08:38 +000030
Richard Smithe6a56db2012-11-29 05:41:51 +000031__int128 n; // expected-error {{__int128 is not supported on this target}}
32
33#if defined(__SIZEOF_INT128__)
34#error __SIZEOF_INT128__ should not be defined
35#endif
36
37#endif