Index: llvm/include/llvm/DebugInfo/CodeView/CodeView.h =================================================================== --- llvm/include/llvm/DebugInfo/CodeView/CodeView.h +++ llvm/include/llvm/DebugInfo/CodeView/CodeView.h @@ -162,6 +162,8 @@ MSIL = 0x0f, HLSL = 0x10, + Rust = 0x15, + /// The DMD & Swift compilers emit 'D' and 'S', respectively, for the CV /// source language. Microsoft does not have enumerators for them yet. D = 'D', Index: llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp =================================================================== --- llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp +++ llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp @@ -600,6 +600,8 @@ return SourceLanguage::D; case dwarf::DW_LANG_Swift: return SourceLanguage::Swift; + case dwarf::DW_LANG_Rust: + return SourceLanguage::Rust; default: // There's no CodeView representation for this language, and CV doesn't // have an "unknown" option for the language field, so we'll use MASM, Index: llvm/lib/DebugInfo/CodeView/EnumTables.cpp =================================================================== --- llvm/lib/DebugInfo/CodeView/EnumTables.cpp +++ llvm/lib/DebugInfo/CodeView/EnumTables.cpp @@ -104,7 +104,7 @@ CV_ENUM_ENT(SourceLanguage, ILAsm), CV_ENUM_ENT(SourceLanguage, Java), CV_ENUM_ENT(SourceLanguage, JScript), CV_ENUM_ENT(SourceLanguage, MSIL), CV_ENUM_ENT(SourceLanguage, HLSL), CV_ENUM_ENT(SourceLanguage, D), - CV_ENUM_ENT(SourceLanguage, Swift), + CV_ENUM_ENT(SourceLanguage, Swift), CV_ENUM_ENT(SourceLanguage, Rust), }; static const EnumEntry CompileSym2FlagNames[] = { Index: llvm/lib/DebugInfo/PDB/PDBExtras.cpp =================================================================== --- llvm/lib/DebugInfo/PDB/PDBExtras.cpp +++ llvm/lib/DebugInfo/PDB/PDBExtras.cpp @@ -231,6 +231,7 @@ CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Lang, HLSL, OS) CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Lang, D, OS) CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Lang, Swift, OS) + CASE_OUTPUT_ENUM_CLASS_NAME(PDB_Lang, Rust, OS) } return OS; } Index: llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp =================================================================== --- llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp +++ llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp @@ -100,6 +100,7 @@ .Case(".c", Lang == PDB_Lang::C) .Case(".asm", Lang == PDB_Lang::Masm) .Case(".swift", Lang == PDB_Lang::Swift) + .Case(".rs", Lang == PDB_Lang::Rust) .Default(false)) return File->getFileName(); } Index: llvm/test/DebugInfo/COFF/language.ll =================================================================== --- llvm/test/DebugInfo/COFF/language.ll +++ llvm/test/DebugInfo/COFF/language.ll @@ -36,6 +36,9 @@ ; ; RUN: sed -e 's//DW_LANG_Fortran08/;s//Fortran/' %s > %t ; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t +; +; RUN: sed -e 's//DW_LANG_Rust/;s//Rust/' %s > %t +; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t ; CHECK: CodeViewDebugInfo [ ; CHECK: Subsection [ Index: llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp =================================================================== --- llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp +++ llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp @@ -207,6 +207,7 @@ RETURN_CASE(SourceLanguage, HLSL, "hlsl"); RETURN_CASE(SourceLanguage, D, "d"); RETURN_CASE(SourceLanguage, Swift, "swift"); + RETURN_CASE(SourceLanguage, Rust, "rust"); } return formatUnknownEnum(Lang); }