<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Oct 1, 2019, at 6:40 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com" class="">dblaikie@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">This broke gnu_pubnames and other forms of DWARF index of C++ code - fixed in r373420 (feel free to post-comimt review, etc, of course)</div><br class=""></div></blockquote><div><br class=""></div><div>Thanks!</div><div><br class=""></div><div>-- adrian</div><br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 23, 2019 at 5:36 PM Adrian Prantl via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: adrian<br class="">
Date: Mon Sep 23 17:38:49 2019<br class="">
New Revision: 372681<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=372681&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=372681&view=rev</a><br class="">
Log:<br class="">
Support for DWARF-5 C++ language tags.<br class="">
<br class="">
This patch provides support for DW_LANG_C_plus_plus_11,<br class="">
DW_LANG_C_plus_plus_14 tags in the Clang C++ frontend.<br class="">
<br class="">
Patch by Sourabh Singh Tomar!<br class="">
Differential Revision: <a href="https://reviews.llvm.org/D67613" rel="noreferrer" target="_blank" class="">https://reviews.llvm.org/D67613</a><br class="">
<br class="">
Reapplies r372663 after adapting a failing test in the LLDB testsuite.<br class="">
<br class="">
Modified:<br class="">
    cfe/trunk/include/clang/AST/DeclCXX.h<br class="">
    cfe/trunk/lib/AST/DeclPrinter.cpp<br class="">
    cfe/trunk/lib/AST/JSONNodeDumper.cpp<br class="">
    cfe/trunk/lib/AST/TextNodeDumper.cpp<br class="">
    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<br class="">
    cfe/trunk/lib/CodeGen/CodeGenModule.cpp<br class="">
    cfe/trunk/lib/Sema/SemaDeclCXX.cpp<br class="">
    cfe/trunk/lib/Sema/SemaModule.cpp<br class="">
    cfe/trunk/test/Modules/ModuleDebugInfo.cpp<br class="">
<br class="">
Modified: cfe/trunk/include/clang/AST/DeclCXX.h<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/include/clang/AST/DeclCXX.h (original)<br class="">
+++ cfe/trunk/include/clang/AST/DeclCXX.h Mon Sep 23 17:38:49 2019<br class="">
@@ -42,6 +42,7 @@<br class="">
 #include "llvm/ADT/PointerUnion.h"<br class="">
 #include "llvm/ADT/STLExtras.h"<br class="">
 #include "llvm/ADT/iterator_range.h"<br class="">
+#include "llvm/BinaryFormat/Dwarf.h"<br class="">
 #include "llvm/Support/Casting.h"<br class="">
 #include "llvm/Support/Compiler.h"<br class="">
 #include "llvm/Support/PointerLikeTypeTraits.h"<br class="">
@@ -2941,8 +2942,10 @@ public:<br class="">
   /// ensure a stable ABI for this, we choose the DW_LANG_ encodings<br class="">
   /// from the dwarf standard.<br class="">
   enum LanguageIDs {<br class="">
-    lang_c = /* DW_LANG_C */ 0x0002,<br class="">
-    lang_cxx = /* DW_LANG_C_plus_plus */ 0x0004<br class="">
+    lang_c = llvm::dwarf::DW_LANG_C,<br class="">
+    lang_cxx = llvm::dwarf::DW_LANG_C_plus_plus,<br class="">
+    lang_cxx_11 = llvm::dwarf::DW_LANG_C_plus_plus_11,<br class="">
+    lang_cxx_14 = llvm::dwarf::DW_LANG_C_plus_plus_14<br class="">
   };<br class="">
<br class="">
 private:<br class="">
<br class="">
Modified: cfe/trunk/lib/AST/DeclPrinter.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/AST/DeclPrinter.cpp (original)<br class="">
+++ cfe/trunk/lib/AST/DeclPrinter.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -1001,12 +1001,19 @@ void DeclPrinter::VisitCXXRecordDecl(CXX<br class="">
<br class="">
 void DeclPrinter::VisitLinkageSpecDecl(LinkageSpecDecl *D) {<br class="">
   const char *l;<br class="">
-  if (D->getLanguage() == LinkageSpecDecl::lang_c)<br class="">
+  switch (D->getLanguage()) {<br class="">
+  case LinkageSpecDecl::lang_c:<br class="">
     l = "C";<br class="">
-  else {<br class="">
-    assert(D->getLanguage() == LinkageSpecDecl::lang_cxx &&<br class="">
-           "unknown language in linkage specification");<br class="">
+    break;<br class="">
+  case LinkageSpecDecl::lang_cxx_14:<br class="">
+    l = "C++14";<br class="">
+    break;<br class="">
+  case LinkageSpecDecl::lang_cxx_11:<br class="">
+    l = "C++11";<br class="">
+    break;<br class="">
+  case LinkageSpecDecl::lang_cxx:<br class="">
     l = "C++";<br class="">
+    break;<br class="">
   }<br class="">
<br class="">
   Out << "extern \"" << l << "\" ";<br class="">
<br class="">
Modified: cfe/trunk/lib/AST/JSONNodeDumper.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/JSONNodeDumper.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/JSONNodeDumper.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/AST/JSONNodeDumper.cpp (original)<br class="">
+++ cfe/trunk/lib/AST/JSONNodeDumper.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -850,6 +850,12 @@ void JSONNodeDumper::VisitLinkageSpecDec<br class="">
   switch (LSD->getLanguage()) {<br class="">
   case LinkageSpecDecl::lang_c: Lang = "C"; break;<br class="">
   case LinkageSpecDecl::lang_cxx: Lang = "C++"; break;<br class="">
+  case LinkageSpecDecl::lang_cxx_11:<br class="">
+    Lang = "C++11";<br class="">
+    break;<br class="">
+  case LinkageSpecDecl::lang_cxx_14:<br class="">
+    Lang = "C++14";<br class="">
+    break;<br class="">
   }<br class="">
   JOS.attribute("language", Lang);<br class="">
   attributeOnlyIfTrue("hasBraces", LSD->hasBraces());<br class="">
<br class="">
Modified: cfe/trunk/lib/AST/TextNodeDumper.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TextNodeDumper.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TextNodeDumper.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/AST/TextNodeDumper.cpp (original)<br class="">
+++ cfe/trunk/lib/AST/TextNodeDumper.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -1766,6 +1766,12 @@ void TextNodeDumper::VisitLinkageSpecDec<br class="">
   case LinkageSpecDecl::lang_cxx:<br class="">
     OS << " C++";<br class="">
     break;<br class="">
+  case LinkageSpecDecl::lang_cxx_11:<br class="">
+    OS << " C++11";<br class="">
+    break;<br class="">
+  case LinkageSpecDecl::lang_cxx_14:<br class="">
+    OS << " C++14";<br class="">
+    break;<br class="">
   }<br class="">
 }<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)<br class="">
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -561,6 +561,10 @@ void CGDebugInfo::CreateCompileUnit() {<br class="">
   if (LO.CPlusPlus) {<br class="">
     if (LO.ObjC)<br class="">
       LangTag = llvm::dwarf::DW_LANG_ObjC_plus_plus;<br class="">
+    else if (LO.CPlusPlus14)<br class="">
+      LangTag = llvm::dwarf::DW_LANG_C_plus_plus_14;<br class="">
+    else if (LO.CPlusPlus11)<br class="">
+      LangTag = llvm::dwarf::DW_LANG_C_plus_plus_11;<br class="">
     else<br class="">
       LangTag = llvm::dwarf::DW_LANG_C_plus_plus;<br class="">
   } else if (LO.ObjC) {<br class="">
@@ -878,6 +882,8 @@ llvm::DIType *CGDebugInfo::CreateType(co<br class="">
 static bool hasCXXMangling(const TagDecl *TD, llvm::DICompileUnit *TheCU) {<br class="">
   switch (TheCU->getSourceLanguage()) {<br class="">
   case llvm::dwarf::DW_LANG_C_plus_plus:<br class="">
+  case llvm::dwarf::DW_LANG_C_plus_plus_11:<br class="">
+  case llvm::dwarf::DW_LANG_C_plus_plus_14:<br class="">
     return true;<br class="">
   case llvm::dwarf::DW_LANG_ObjC_plus_plus:<br class="">
     return isa<CXXRecordDecl>(TD) || isa<EnumDecl>(TD);<br class="">
<br class="">
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)<br class="">
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -5132,7 +5132,9 @@ void CodeGenModule::EmitObjCIvarInitiali<br class="">
 // EmitLinkageSpec - Emit all declarations in a linkage spec.<br class="">
 void CodeGenModule::EmitLinkageSpec(const LinkageSpecDecl *LSD) {<br class="">
   if (LSD->getLanguage() != LinkageSpecDecl::lang_c &&<br class="">
-      LSD->getLanguage() != LinkageSpecDecl::lang_cxx) {<br class="">
+      LSD->getLanguage() != LinkageSpecDecl::lang_cxx &&<br class="">
+      LSD->getLanguage() != LinkageSpecDecl::lang_cxx_11 &&<br class="">
+      LSD->getLanguage() != LinkageSpecDecl::lang_cxx_14) {<br class="">
     ErrorUnsupported(LSD, "linkage spec");<br class="">
     return;<br class="">
   }<br class="">
<br class="">
Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)<br class="">
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -13982,6 +13982,10 @@ Decl *Sema::ActOnStartLinkageSpecificati<br class="">
     Language = LinkageSpecDecl::lang_c;<br class="">
   else if (Lang == "C++")<br class="">
     Language = LinkageSpecDecl::lang_cxx;<br class="">
+  else if (Lang == "C++11")<br class="">
+    Language = LinkageSpecDecl::lang_cxx_11;<br class="">
+  else if (Lang == "C++14")<br class="">
+    Language = LinkageSpecDecl::lang_cxx_14;<br class="">
   else {<br class="">
     Diag(LangStr->getExprLoc(), diag::err_language_linkage_spec_unknown)<br class="">
       << LangStr->getSourceRange();<br class="">
<br class="">
Modified: cfe/trunk/lib/Sema/SemaModule.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaModule.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaModule.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/Sema/SemaModule.cpp (original)<br class="">
+++ cfe/trunk/lib/Sema/SemaModule.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -31,6 +31,8 @@ static void checkModuleImportContext(Sem<br class="">
         ExternCLoc = LSD->getBeginLoc();<br class="">
       break;<br class="">
     case LinkageSpecDecl::lang_cxx:<br class="">
+    case LinkageSpecDecl::lang_cxx_11:<br class="">
+    case LinkageSpecDecl::lang_cxx_14:<br class="">
       break;<br class="">
     }<br class="">
     DC = LSD->getParent();<br class="">
<br class="">
Modified: cfe/trunk/test/Modules/ModuleDebugInfo.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ModuleDebugInfo.cpp?rev=372681&r1=372680&r2=372681&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ModuleDebugInfo.cpp?rev=372681&r1=372680&r2=372681&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/Modules/ModuleDebugInfo.cpp (original)<br class="">
+++ cfe/trunk/test/Modules/ModuleDebugInfo.cpp Mon Sep 23 17:38:49 2019<br class="">
@@ -12,7 +12,7 @@<br class="">
<br class="">
 // PCH:<br class="">
 // RUN: %clang_cc1 -triple %itanium_abi_triple -x c++ -std=c++11  -debugger-tuning=lldb -emit-pch -fmodule-format=obj -I %S/Inputs -o %t.pch %S/Inputs/DebugCXX.h -mllvm -debug-only=pchcontainer &>%t-pch.ll<br class="">
-// RUN: cat %t-pch.ll | FileCheck %s<br class="">
+// RUN: cat %t-pch.ll | FileCheck --check-prefix=CHECK-CXX %s<br class="">
 // RUN: cat %t-pch.ll | FileCheck --check-prefix=CHECK-NEG %s<br class="">
<br class="">
 #ifdef MODULES<br class="">
@@ -23,6 +23,7 @@<br class="">
 // CHECK-MOD: distinct !DICompileUnit(language: DW_LANG_{{.*}}C_plus_plus,<br class="">
<br class="">
 // CHECK: distinct !DICompileUnit(language: DW_LANG_{{.*}}C_plus_plus,<br class="">
+// CHECK-CXX: distinct !DICompileUnit(language: DW_LANG_C_plus_plus_11,<br class="">
 // CHECK-SAME:                    isOptimized: false,<br class="">
 // CHECK-NOT:                     splitDebugFilename:<br class="">
 // CHECK-SAME:                    dwoId:<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
cfe-commits mailing list<br class="">
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a><br class="">
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></body></html>