diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-04-04 06:24:32 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-04-04 06:24:32 +0000 |
commit | 5a5a971908a1fd064454db44c42333a3aecf3d5b (patch) | |
tree | bf93fa42041b74e37c2391986f3996ce9ced91f5 /test/Sema/types.c | |
parent | d280389b42bb55cd8969eae181dc3ff9f05e9aaf (diff) |
For PR11916: Add support for g++'s __int128 keyword. Unlike __int128_t, this is
a type specifier and can be combined with unsigned. This allows libstdc++4.7 to
be used with clang in c++98 mode.
Several other changes are still required for libstdc++4.7 to work with clang in
c++11 mode.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153999 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Sema/types.c')
-rw-r--r-- | test/Sema/types.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/Sema/types.c b/test/Sema/types.c index 332b525e33..3bec83e528 100644 --- a/test/Sema/types.c +++ b/test/Sema/types.c @@ -19,7 +19,21 @@ int b() { int __int128_t; int __uint128_t; } +// __int128 is a keyword +int c() { + __int128 i; + unsigned __int128 j; + long unsigned __int128 k; // expected-error {{'long __int128' is invalid}} + int __int128; // expected-error {{cannot combine with previous}} expected-warning {{does not declare anything}} +} +// __int128_t is __int128; __uint128_t is unsigned __int128. +typedef __int128 check_int_128; // expected-note {{here}} +typedef __int128_t check_int_128; // expected-note {{here}} expected-warning {{redefinition}} +typedef int check_int_128; // expected-error {{different types ('int' vs '__int128_t' (aka '__int128'))}} +typedef unsigned __int128 check_uint_128; // expected-note {{here}} +typedef __uint128_t check_uint_128; // expected-note {{here}} expected-warning {{redefinition}} +typedef int check_uint_128; // expected-error {{different types ('int' vs '__uint128_t' (aka 'unsigned __int128'))}} // Array type merging should convert array size to whatever matches the target // pointer size. |