Make linkage-specifications hold on to all of their declarations

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61110 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp
index cc41642..4ff8d3c 100644
--- a/Driver/ASTConsumers.cpp
+++ b/Driver/ASTConsumers.cpp
@@ -185,9 +185,19 @@
            "unknown language in linkage specification");
     l = "C++";
   }
-  Out << "extern \"" << l << "\" { ";
-  PrintDecl(LS->getDecl());
-  Out << "}\n";
+
+  Out << "extern \"" << l << "\" ";
+  if (LS->hasBraces()) 
+    Out << "{\n";
+
+  for (LinkageSpecDecl::decl_const_iterator D = LS->decls_begin(), 
+                                         DEnd = LS->decls_end();
+       D != DEnd; ++D)
+    PrintDecl(*D);
+
+  if (LS->hasBraces())
+    Out << "}";
+  Out << "\n";
 }
 
 void DeclPrinter::PrintObjCMethodDecl(ObjCMethodDecl *OMD) {