diff options
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
-rw-r--r-- | lib/Sema/SemaType.cpp | 5 | ||||
-rw-r--r-- | test/Sema/types.c | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index cb947fadf7..c459192b29 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -1714,6 +1714,8 @@ def warn_missing_declspec : Warning< def warn_missing_type_specifier : Warning< "type specifier missing, defaults to 'int'">, InGroup<ImplicitInt>; +def err_decimal_unsupported : Error< + "GNU decimal type extension not supported">; def err_missing_type_specifier : Error< "C++ requires a type specifier for all declarations">; def err_missing_param_declspec : Error< diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index d04a5ad6c5..972ac82b4c 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -164,7 +164,10 @@ QualType Sema::ConvertDeclSpecToType(const DeclSpec &DS, case DeclSpec::TST_decimal32: // _Decimal32 case DeclSpec::TST_decimal64: // _Decimal64 case DeclSpec::TST_decimal128: // _Decimal128 - assert(0 && "FIXME: GNU decimal extensions not supported yet!"); + Diag(DS.getTypeSpecTypeLoc(), diag::err_decimal_unsupported); + Result = Context.IntTy; + isInvalid = true; + break; case DeclSpec::TST_class: case DeclSpec::TST_enum: case DeclSpec::TST_union: diff --git a/test/Sema/types.c b/test/Sema/types.c index 7ab4e0672c..1232e472ea 100644 --- a/test/Sema/types.c +++ b/test/Sema/types.c @@ -30,3 +30,7 @@ int i[(short)1]; enum e { e_1 }; extern int j[sizeof(enum e)]; // expected-note {{previous definition}} int j[42]; // expected-error {{redefinition of 'j' with a different type}} + +// rdar://6880104 +_Decimal32 x; // expected-error {{GNU decimal type extension not supported}} + |