From 9b9bdba90cb7a61ed0e5bbadf9155b9d6848ce98 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Thu, 20 Jun 2013 23:30:30 +0000 Subject: [PATCH] Fix a crash with __flaot128 noticed by Eli. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184498 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/AST/ASTContext.cpp | 12 ++++++------ test/Sema/128bitfloat.cc | 13 ++++++++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 870e09cc67..f91182b9bd 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -859,12 +859,12 @@ TypedefDecl *ASTContext::getUInt128Decl() const { TypeDecl *ASTContext::getFloat128StubType() const { if (!Float128StubDecl) { - Float128StubDecl = RecordDecl::Create(const_cast(*this), - TTK_Struct, - getTranslationUnitDecl(), - SourceLocation(), - SourceLocation(), - &Idents.get("__float128")); + Float128StubDecl = CXXRecordDecl::Create(const_cast(*this), + TTK_Struct, + getTranslationUnitDecl(), + SourceLocation(), + SourceLocation(), + &Idents.get("__float128")); } return Float128StubDecl; diff --git a/test/Sema/128bitfloat.cc b/test/Sema/128bitfloat.cc index 077e61a51d..cb76dac960 100644 --- a/test/Sema/128bitfloat.cc +++ b/test/Sema/128bitfloat.cc @@ -2,12 +2,23 @@ // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s #if !defined(__STRICT_ANSI__) -__float128 f; // expected-error{{support for type '__float128' is not yet implemented}} +__float128 f; // expected-error {{support for type '__float128' is not yet implemented}} // But this should work: template struct __is_floating_point_helper {}; template<> struct __is_floating_point_helper<__float128> {}; + +// FIXME: This could have a better diag. +void g(int x, __float128 *y) { + x + *y; // expected-error {{invalid operands to binary expression ('int' and '__float128')}} +} + #else __float128 f; // expected-error {{unknown type name '__float128'}} template struct __is_floating_point_helper {}; template<> struct __is_floating_point_helper<__float128> {}; // expected-error {{use of undeclared identifier '__float128'}} + +void g(int x, __float128 *y) { // expected-error {{unknown type name '__float128'}} + x + *y; +} + #endif -- 2.40.0