Out of curiosity, should/would this've shown up for you Apple folks too? (as a failure in the apple/lldb accelerator tables - because the names would be similarly incorrect) had it just not got to the necessary testing yet?
On Wed, Oct 2, 2019 at 8:29 AM Adrian Prantl <apra...@apple.com> wrote: > > > On Oct 1, 2019, at 6:40 PM, David Blaikie <dblai...@gmail.com> wrote: > > 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) > > > Thanks! > > -- adrian > > On Mon, Sep 23, 2019 at 5:36 PM Adrian Prantl via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: adrian >> Date: Mon Sep 23 17:38:49 2019 >> New Revision: 372681 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=372681&view=rev >> Log: >> Support for DWARF-5 C++ language tags. >> >> This patch provides support for DW_LANG_C_plus_plus_11, >> DW_LANG_C_plus_plus_14 tags in the Clang C++ frontend. >> >> Patch by Sourabh Singh Tomar! >> Differential Revision: https://reviews.llvm.org/D67613 >> >> Reapplies r372663 after adapting a failing test in the LLDB testsuite. >> >> Modified: >> cfe/trunk/include/clang/AST/DeclCXX.h >> cfe/trunk/lib/AST/DeclPrinter.cpp >> cfe/trunk/lib/AST/JSONNodeDumper.cpp >> cfe/trunk/lib/AST/TextNodeDumper.cpp >> cfe/trunk/lib/CodeGen/CGDebugInfo.cpp >> cfe/trunk/lib/CodeGen/CodeGenModule.cpp >> cfe/trunk/lib/Sema/SemaDeclCXX.cpp >> cfe/trunk/lib/Sema/SemaModule.cpp >> cfe/trunk/test/Modules/ModuleDebugInfo.cpp >> >> Modified: cfe/trunk/include/clang/AST/DeclCXX.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/include/clang/AST/DeclCXX.h (original) >> +++ cfe/trunk/include/clang/AST/DeclCXX.h Mon Sep 23 17:38:49 2019 >> @@ -42,6 +42,7 @@ >> #include "llvm/ADT/PointerUnion.h" >> #include "llvm/ADT/STLExtras.h" >> #include "llvm/ADT/iterator_range.h" >> +#include "llvm/BinaryFormat/Dwarf.h" >> #include "llvm/Support/Casting.h" >> #include "llvm/Support/Compiler.h" >> #include "llvm/Support/PointerLikeTypeTraits.h" >> @@ -2941,8 +2942,10 @@ public: >> /// ensure a stable ABI for this, we choose the DW_LANG_ encodings >> /// from the dwarf standard. >> enum LanguageIDs { >> - lang_c = /* DW_LANG_C */ 0x0002, >> - lang_cxx = /* DW_LANG_C_plus_plus */ 0x0004 >> + lang_c = llvm::dwarf::DW_LANG_C, >> + lang_cxx = llvm::dwarf::DW_LANG_C_plus_plus, >> + lang_cxx_11 = llvm::dwarf::DW_LANG_C_plus_plus_11, >> + lang_cxx_14 = llvm::dwarf::DW_LANG_C_plus_plus_14 >> }; >> >> private: >> >> Modified: cfe/trunk/lib/AST/DeclPrinter.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/AST/DeclPrinter.cpp (original) >> +++ cfe/trunk/lib/AST/DeclPrinter.cpp Mon Sep 23 17:38:49 2019 >> @@ -1001,12 +1001,19 @@ void DeclPrinter::VisitCXXRecordDecl(CXX >> >> void DeclPrinter::VisitLinkageSpecDecl(LinkageSpecDecl *D) { >> const char *l; >> - if (D->getLanguage() == LinkageSpecDecl::lang_c) >> + switch (D->getLanguage()) { >> + case LinkageSpecDecl::lang_c: >> l = "C"; >> - else { >> - assert(D->getLanguage() == LinkageSpecDecl::lang_cxx && >> - "unknown language in linkage specification"); >> + break; >> + case LinkageSpecDecl::lang_cxx_14: >> + l = "C++14"; >> + break; >> + case LinkageSpecDecl::lang_cxx_11: >> + l = "C++11"; >> + break; >> + case LinkageSpecDecl::lang_cxx: >> l = "C++"; >> + break; >> } >> >> Out << "extern \"" << l << "\" "; >> >> Modified: cfe/trunk/lib/AST/JSONNodeDumper.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/JSONNodeDumper.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/AST/JSONNodeDumper.cpp (original) >> +++ cfe/trunk/lib/AST/JSONNodeDumper.cpp Mon Sep 23 17:38:49 2019 >> @@ -850,6 +850,12 @@ void JSONNodeDumper::VisitLinkageSpecDec >> switch (LSD->getLanguage()) { >> case LinkageSpecDecl::lang_c: Lang = "C"; break; >> case LinkageSpecDecl::lang_cxx: Lang = "C++"; break; >> + case LinkageSpecDecl::lang_cxx_11: >> + Lang = "C++11"; >> + break; >> + case LinkageSpecDecl::lang_cxx_14: >> + Lang = "C++14"; >> + break; >> } >> JOS.attribute("language", Lang); >> attributeOnlyIfTrue("hasBraces", LSD->hasBraces()); >> >> Modified: cfe/trunk/lib/AST/TextNodeDumper.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TextNodeDumper.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/AST/TextNodeDumper.cpp (original) >> +++ cfe/trunk/lib/AST/TextNodeDumper.cpp Mon Sep 23 17:38:49 2019 >> @@ -1766,6 +1766,12 @@ void TextNodeDumper::VisitLinkageSpecDec >> case LinkageSpecDecl::lang_cxx: >> OS << " C++"; >> break; >> + case LinkageSpecDecl::lang_cxx_11: >> + OS << " C++11"; >> + break; >> + case LinkageSpecDecl::lang_cxx_14: >> + OS << " C++14"; >> + break; >> } >> } >> >> >> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Sep 23 17:38:49 2019 >> @@ -561,6 +561,10 @@ void CGDebugInfo::CreateCompileUnit() { >> if (LO.CPlusPlus) { >> if (LO.ObjC) >> LangTag = llvm::dwarf::DW_LANG_ObjC_plus_plus; >> + else if (LO.CPlusPlus14) >> + LangTag = llvm::dwarf::DW_LANG_C_plus_plus_14; >> + else if (LO.CPlusPlus11) >> + LangTag = llvm::dwarf::DW_LANG_C_plus_plus_11; >> else >> LangTag = llvm::dwarf::DW_LANG_C_plus_plus; >> } else if (LO.ObjC) { >> @@ -878,6 +882,8 @@ llvm::DIType *CGDebugInfo::CreateType(co >> static bool hasCXXMangling(const TagDecl *TD, llvm::DICompileUnit >> *TheCU) { >> switch (TheCU->getSourceLanguage()) { >> case llvm::dwarf::DW_LANG_C_plus_plus: >> + case llvm::dwarf::DW_LANG_C_plus_plus_11: >> + case llvm::dwarf::DW_LANG_C_plus_plus_14: >> return true; >> case llvm::dwarf::DW_LANG_ObjC_plus_plus: >> return isa<CXXRecordDecl>(TD) || isa<EnumDecl>(TD); >> >> Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) >> +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Mon Sep 23 17:38:49 2019 >> @@ -5132,7 +5132,9 @@ void CodeGenModule::EmitObjCIvarInitiali >> // EmitLinkageSpec - Emit all declarations in a linkage spec. >> void CodeGenModule::EmitLinkageSpec(const LinkageSpecDecl *LSD) { >> if (LSD->getLanguage() != LinkageSpecDecl::lang_c && >> - LSD->getLanguage() != LinkageSpecDecl::lang_cxx) { >> + LSD->getLanguage() != LinkageSpecDecl::lang_cxx && >> + LSD->getLanguage() != LinkageSpecDecl::lang_cxx_11 && >> + LSD->getLanguage() != LinkageSpecDecl::lang_cxx_14) { >> ErrorUnsupported(LSD, "linkage spec"); >> return; >> } >> >> Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Sep 23 17:38:49 2019 >> @@ -13982,6 +13982,10 @@ Decl *Sema::ActOnStartLinkageSpecificati >> Language = LinkageSpecDecl::lang_c; >> else if (Lang == "C++") >> Language = LinkageSpecDecl::lang_cxx; >> + else if (Lang == "C++11") >> + Language = LinkageSpecDecl::lang_cxx_11; >> + else if (Lang == "C++14") >> + Language = LinkageSpecDecl::lang_cxx_14; >> else { >> Diag(LangStr->getExprLoc(), diag::err_language_linkage_spec_unknown) >> << LangStr->getSourceRange(); >> >> Modified: cfe/trunk/lib/Sema/SemaModule.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaModule.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaModule.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaModule.cpp Mon Sep 23 17:38:49 2019 >> @@ -31,6 +31,8 @@ static void checkModuleImportContext(Sem >> ExternCLoc = LSD->getBeginLoc(); >> break; >> case LinkageSpecDecl::lang_cxx: >> + case LinkageSpecDecl::lang_cxx_11: >> + case LinkageSpecDecl::lang_cxx_14: >> break; >> } >> DC = LSD->getParent(); >> >> Modified: cfe/trunk/test/Modules/ModuleDebugInfo.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ModuleDebugInfo.cpp?rev=372681&r1=372680&r2=372681&view=diff >> >> ============================================================================== >> --- cfe/trunk/test/Modules/ModuleDebugInfo.cpp (original) >> +++ cfe/trunk/test/Modules/ModuleDebugInfo.cpp Mon Sep 23 17:38:49 2019 >> @@ -12,7 +12,7 @@ >> >> // PCH: >> // 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 >> -// RUN: cat %t-pch.ll | FileCheck %s >> +// RUN: cat %t-pch.ll | FileCheck --check-prefix=CHECK-CXX %s >> // RUN: cat %t-pch.ll | FileCheck --check-prefix=CHECK-NEG %s >> >> #ifdef MODULES >> @@ -23,6 +23,7 @@ >> // CHECK-MOD: distinct !DICompileUnit(language: >> DW_LANG_{{.*}}C_plus_plus, >> >> // CHECK: distinct !DICompileUnit(language: DW_LANG_{{.*}}C_plus_plus, >> +// CHECK-CXX: distinct !DICompileUnit(language: DW_LANG_C_plus_plus_11, >> // CHECK-SAME: isOptimized: false, >> // CHECK-NOT: splitDebugFilename: >> // CHECK-SAME: dwoId: >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits