diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h --- a/lldb/include/lldb/lldb-enumerations.h +++ b/lldb/include/lldb/lldb-enumerations.h @@ -490,6 +490,7 @@ eLanguageTypeFortran18 = 0x002d, eLanguageTypeAda2005 = 0x002e, eLanguageTypeAda2012 = 0x002f, + eLanguageTypeMojo = 0x0030, // Vendor Extensions // Note: Language::GetNameForLanguageType diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp --- a/lldb/source/Target/Language.cpp +++ b/lldb/source/Target/Language.cpp @@ -209,6 +209,7 @@ {"fortran18", eLanguageTypeFortran18}, {"ada2005", eLanguageTypeAda2005}, {"ada2012", eLanguageTypeAda2012}, + {"mojo", eLanguageTypeMojo}, // Vendor Extensions {"assembler", eLanguageTypeMipsAssembler}, // Now synonyms, in arbitrary order @@ -463,7 +464,7 @@ // The base implementation does a simple contains comparision: if (path.empty()) return false; - return demangled.GetStringRef().contains(path); + return demangled.GetStringRef().contains(path); } DumpValueObjectOptions::DeclPrintingHelper Language::GetDeclPrintingHelper() { diff --git a/llvm/include/llvm-c/DebugInfo.h b/llvm/include/llvm-c/DebugInfo.h --- a/llvm/include/llvm-c/DebugInfo.h +++ b/llvm/include/llvm-c/DebugInfo.h @@ -125,6 +125,7 @@ LLVMDWARFSourceLanguageFortran18, LLVMDWARFSourceLanguageAda2005, LLVMDWARFSourceLanguageAda2012, + LLVMDWARFSourceLanguageMojo, // Vendor extensions: LLVMDWARFSourceLanguageMips_Assembler, LLVMDWARFSourceLanguageGOOGLE_RenderScript, diff --git a/llvm/include/llvm/BinaryFormat/Dwarf.h b/llvm/include/llvm/BinaryFormat/Dwarf.h --- a/llvm/include/llvm/BinaryFormat/Dwarf.h +++ b/llvm/include/llvm/BinaryFormat/Dwarf.h @@ -263,6 +263,7 @@ case DW_LANG_Fortran18: case DW_LANG_Ada2005: case DW_LANG_Ada2012: + case DW_LANG_Mojo: result = false; break; } @@ -329,6 +330,7 @@ case DW_LANG_C17: case DW_LANG_Ada2005: case DW_LANG_Ada2012: + case DW_LANG_Mojo: result = false; break; } @@ -393,6 +395,7 @@ case DW_LANG_Fortran18: case DW_LANG_Ada2005: case DW_LANG_Ada2012: + case DW_LANG_Mojo: return false; } llvm_unreachable("Unknown language kind."); diff --git a/llvm/include/llvm/BinaryFormat/Dwarf.def b/llvm/include/llvm/BinaryFormat/Dwarf.def --- a/llvm/include/llvm/BinaryFormat/Dwarf.def +++ b/llvm/include/llvm/BinaryFormat/Dwarf.def @@ -925,6 +925,7 @@ HANDLE_DW_LANG(0x002d, Fortran18, 0, 0, DWARF) HANDLE_DW_LANG(0x002e, Ada2005, 0, 0, DWARF) HANDLE_DW_LANG(0x002f, Ada2012, 0, 0, DWARF) +HANDLE_DW_LANG(0x0030, Mojo, 0, 0, DWARF) // Vendor extensions: HANDLE_DW_LANG(0x8001, Mips_Assembler, std::nullopt, 0, MIPS) HANDLE_DW_LANG(0x8e57, GOOGLE_RenderScript, 0, 0, GOOGLE) diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp --- a/llvm/lib/IR/DIBuilder.cpp +++ b/llvm/lib/IR/DIBuilder.cpp @@ -150,7 +150,7 @@ DICompileUnit::DebugNameTableKind NameTableKind, bool RangesBaseAddress, StringRef SysRoot, StringRef SDK) { - assert(((Lang <= dwarf::DW_LANG_Ada2012 && Lang >= dwarf::DW_LANG_C89) || + assert(((Lang <= dwarf::DW_LANG_Mojo && Lang >= dwarf::DW_LANG_C89) || (Lang <= dwarf::DW_LANG_hi_user && Lang >= dwarf::DW_LANG_lo_user)) && "Invalid Language tag");