r372681 - Support for DWARF-5 C++ language tags.
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 2 08:32:09 PDT 2019
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 <aprantl at apple.com> wrote:
>
>
> On Oct 1, 2019, at 6:40 PM, David Blaikie <dblaikie at 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 at 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 at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191002/cdbb1544/attachment-0001.html>
More information about the cfe-commits
mailing list