r184498 - Fix a crash with __flaot128 noticed by Eli.
Richard Smith
richard at metafoo.co.uk
Thu Jun 20 16:43:20 PDT 2013
On Thu, Jun 20, 2013 at 4:30 PM, Nico Weber <nicolasweber at gmx.de> wrote:
> Author: nico
> Date: Thu Jun 20 18:30:30 2013
> New Revision: 184498
>
> URL: http://llvm.org/viewvc/llvm-project?rev=184498&view=rev
> Log:
> Fix a crash with __flaot128 noticed by Eli.
>
>
> Modified:
> cfe/trunk/lib/AST/ASTContext.cpp
> cfe/trunk/test/Sema/128bitfloat.cc
>
> Modified: cfe/trunk/lib/AST/ASTContext.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=184498&r1=184497&r2=184498&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/ASTContext.cpp (original)
> +++ cfe/trunk/lib/AST/ASTContext.cpp Thu Jun 20 18:30:30 2013
> @@ -859,12 +859,12 @@ TypedefDecl *ASTContext::getUInt128Decl(
>
> TypeDecl *ASTContext::getFloat128StubType() const {
> if (!Float128StubDecl) {
> - Float128StubDecl = RecordDecl::Create(const_cast<ASTContext &>(*this),
> - TTK_Struct,
> - getTranslationUnitDecl(),
> - SourceLocation(),
> - SourceLocation(),
> - &Idents.get("__float128"));
> + Float128StubDecl = CXXRecordDecl::Create(const_cast<ASTContext &>(*this),
> + TTK_Struct,
> + getTranslationUnitDecl(),
> + SourceLocation(),
> + SourceLocation(),
> + &Idents.get("__float128"));
Maybe assert getLangOpts().CPlusPlus before creating a CXXRecordDecl?
> }
>
> return Float128StubDecl;
>
> Modified: cfe/trunk/test/Sema/128bitfloat.cc
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/128bitfloat.cc?rev=184498&r1=184497&r2=184498&view=diff
> ==============================================================================
> --- cfe/trunk/test/Sema/128bitfloat.cc (original)
> +++ cfe/trunk/test/Sema/128bitfloat.cc Thu Jun 20 18:30:30 2013
> @@ -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<typename> 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<typename> 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
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list