r184498 - Fix a crash with __flaot128 noticed by Eli.

Nico Weber nicolasweber at gmx.de
Thu Jun 20 16:30:30 PDT 2013


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"));
   }
   
   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





More information about the cfe-commits mailing list