[cfe-commits] r102160 - in /cfe/trunk: lib/CodeGen/CGDecl.cpp test/CodeGenCXX/namespace-aliases.cpp

Douglas Gregor dgregor at apple.com
Thu Apr 22 19:02:43 PDT 2010


Author: dgregor
Date: Thu Apr 22 21:02:43 2010
New Revision: 102160

URL: http://llvm.org/viewvc/llvm-project?rev=102160&view=rev
Log:
I hate default statements. Fixes PR6874.

Modified:
    cfe/trunk/lib/CodeGen/CGDecl.cpp
    cfe/trunk/test/CodeGenCXX/namespace-aliases.cpp

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=102160&r1=102159&r2=102160&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Thu Apr 22 21:02:43 2010
@@ -31,11 +31,44 @@
 
 void CodeGenFunction::EmitDecl(const Decl &D) {
   switch (D.getKind()) {
-  default:
-    CGM.ErrorUnsupported(&D, "decl");
-    return;
+  case Decl::TranslationUnit:
+  case Decl::Namespace:
+  case Decl::UnresolvedUsingTypename:
+  case Decl::ClassTemplateSpecialization:
+  case Decl::ClassTemplatePartialSpecialization:
+  case Decl::TemplateTypeParm:
+  case Decl::UnresolvedUsingValue:
+    case Decl::NonTypeTemplateParm:
+  case Decl::CXXMethod:
+  case Decl::CXXConstructor:
+  case Decl::CXXDestructor:
+  case Decl::CXXConversion:
+  case Decl::Field:
+  case Decl::ObjCIvar:
+  case Decl::ObjCAtDefsField:      
   case Decl::ParmVar:
-    assert(0 && "Parmdecls should not be in declstmts!");
+  case Decl::ImplicitParam:
+  case Decl::ClassTemplate:
+  case Decl::FunctionTemplate:
+  case Decl::TemplateTemplateParm:
+  case Decl::ObjCMethod:
+  case Decl::ObjCCategory:
+  case Decl::ObjCProtocol:
+  case Decl::ObjCInterface:
+  case Decl::ObjCCategoryImpl:
+  case Decl::ObjCImplementation:
+  case Decl::ObjCProperty:
+  case Decl::ObjCCompatibleAlias:
+  case Decl::LinkageSpec:
+  case Decl::ObjCPropertyImpl:
+  case Decl::ObjCClass:
+  case Decl::ObjCForwardProtocol:
+  case Decl::FileScopeAsm:
+  case Decl::Friend:
+  case Decl::FriendTemplate:
+  case Decl::Block:
+    
+    assert(0 && "Declaration not should not be in declstmts!");
   case Decl::Function:  // void X();
   case Decl::Record:    // struct/union/class X;
   case Decl::Enum:      // enum X;
@@ -44,6 +77,7 @@
   case Decl::Using:          // using X; [C++]
   case Decl::UsingShadow:
   case Decl::UsingDirective: // using namespace X; [C++]
+  case Decl::NamespaceAlias:
   case Decl::StaticAssert: // static_assert(X, ""); [C++0x]
     // None of these decls require codegen support.
     return;

Modified: cfe/trunk/test/CodeGenCXX/namespace-aliases.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/namespace-aliases.cpp?rev=102160&r1=102159&r2=102160&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/namespace-aliases.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/namespace-aliases.cpp Thu Apr 22 21:02:43 2010
@@ -1,3 +1,9 @@
 // RUN: %clang_cc1 -emit-llvm-only %s
 namespace A { }
 namespace B = A;
+
+namespace b {}
+
+void foo() {
+    namespace a = b;
+}





More information about the cfe-commits mailing list