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