[cfe-commits] r139103 - in /cfe/trunk: lib/Parse/ParseDecl.cpp test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp

Richard Smith richard-llvm at metafoo.co.uk
Sun Sep 4 13:24:20 PDT 2011


Author: rsmith
Date: Sun Sep  4 15:24:20 2011
New Revision: 139103

URL: http://llvm.org/viewvc/llvm-project?rev=139103&view=rev
Log:
PR10458: Last part of providing 'auto' type specifier as an extension in C++98: permit it within type-ids.

Modified:
    cfe/trunk/lib/Parse/ParseDecl.cpp
    cfe/trunk/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp

Modified: cfe/trunk/lib/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=139103&r1=139102&r2=139103&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseDecl.cpp (original)
+++ cfe/trunk/lib/Parse/ParseDecl.cpp Sun Sep  4 15:24:20 2011
@@ -2265,7 +2265,11 @@
 
   // C++0x auto support.
   case tok::kw_auto:
-    if (!getLang().CPlusPlus0x)
+    // This is only called in situations where a storage-class specifier is
+    // illegal, so we can assume an auto type specifier was intended even in
+    // C++98. In C++98 mode, DeclSpec::Finish will produce an appropriate
+    // extension diagnostic.
+    if (!getLang().CPlusPlus)
       return false;
 
     isInvalid = DS.SetTypeSpecType(DeclSpec::TST_auto, Loc, PrevSpec, DiagID);

Modified: cfe/trunk/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp?rev=139103&r1=139102&r2=139103&view=diff
==============================================================================
--- cfe/trunk/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp (original)
+++ cfe/trunk/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p4.cpp Sun Sep  4 15:24:20 2011
@@ -20,10 +20,7 @@
   for (; auto a = false; ) {
   }
 
-  // FIXME: support 'auto' error recovery here in pre-C++0x mode.
-#if __has_feature(cxx_auto_type)
   new const auto (0);
-#endif
   new (auto) (0.0);
 
   int arr[] = {1, 2, 3};





More information about the cfe-commits mailing list