> 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 <mailto: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 > <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 > <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 > > <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 > > <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 > > <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 > > <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 > > <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 > > <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 > > <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 > > <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 > > <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 <mailto:cfe-commits@lists.llvm.org> > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > <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