Add more DWARF 5 language constants.
authorBruce Mitchener <bruce.mitchener@gmail.com>
Sat, 7 Feb 2015 06:35:30 +0000 (06:35 +0000)
committerBruce Mitchener <bruce.mitchener@gmail.com>
Sat, 7 Feb 2015 06:35:30 +0000 (06:35 +0000)
Differential Revision: http://reviews.llvm.org/D7430

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228487 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/Dwarf.def
lib/CodeGen/AsmPrinter/DwarfUnit.cpp
lib/IR/DIBuilder.cpp

index b859f198ea2d21cb37914523ea62dfd121b18ab8..14923b8008b5ae7dd74eb1f97f69920dfedfbf21 100644 (file)
@@ -144,6 +144,14 @@ HANDLE_DW_LANG(0x0018, Haskell)
 HANDLE_DW_LANG(0x0019, C_plus_plus_03)
 HANDLE_DW_LANG(0x001a, C_plus_plus_11)
 HANDLE_DW_LANG(0x001b, OCaml)
 HANDLE_DW_LANG(0x0019, C_plus_plus_03)
 HANDLE_DW_LANG(0x001a, C_plus_plus_11)
 HANDLE_DW_LANG(0x001b, OCaml)
+HANDLE_DW_LANG(0x001c, Rust)
+HANDLE_DW_LANG(0x001d, C11)
+HANDLE_DW_LANG(0x001e, Swift)
+HANDLE_DW_LANG(0x001f, Julia)
+HANDLE_DW_LANG(0x0020, Dylan)
+HANDLE_DW_LANG(0x0021, C_plus_plus_14)
+HANDLE_DW_LANG(0x0022, Fortran03)
+HANDLE_DW_LANG(0x0023, Fortran08)
 HANDLE_DW_LANG(0x8001, Mips_Assembler)
 
 // DWARF attribute type encodings.
 HANDLE_DW_LANG(0x8001, Mips_Assembler)
 
 // DWARF attribute type encodings.
index 1224ac8f500bea2860bf4af5ca7e7c913d56d1de..7caf31af3783d4cbee3780e9e004e37bdb74cb3a 100644 (file)
@@ -130,6 +130,30 @@ int64_t DwarfUnit::getDefaultLowerBound() const {
     if (dwarf::DWARF_VERSION >= 4)
       return 1;
     break;
     if (dwarf::DWARF_VERSION >= 4)
       return 1;
     break;
+
+  // The languages below have valid values only if the DWARF version >= 5.
+  case dwarf::DW_LANG_OpenCL:
+  case dwarf::DW_LANG_Go:
+  case dwarf::DW_LANG_Haskell:
+  case dwarf::DW_LANG_C_plus_plus_03:
+  case dwarf::DW_LANG_C_plus_plus_11:
+  case dwarf::DW_LANG_OCaml:
+  case dwarf::DW_LANG_Rust:
+  case dwarf::DW_LANG_C11:
+  case dwarf::DW_LANG_Swift:
+  case dwarf::DW_LANG_Dylan:
+  case dwarf::DW_LANG_C_plus_plus_14:
+    if (dwarf::DWARF_VERSION >= 5)
+      return 0;
+    break;
+
+  case dwarf::DW_LANG_Modula3:
+  case dwarf::DW_LANG_Julia:
+  case dwarf::DW_LANG_Fortran03:
+  case dwarf::DW_LANG_Fortran08:
+    if (dwarf::DWARF_VERSION >= 5)
+      return 1;
+    break;
   }
 
   return -1;
   }
 
   return -1;
index 603fafc15fde9342e4aed1ef44c4b4605b8ce84d..4c8dbb7251454611c44fd45ece5323a8634db714 100644 (file)
@@ -145,7 +145,7 @@ DICompileUnit DIBuilder::createCompileUnit(unsigned Lang, StringRef Filename,
                                            DebugEmissionKind Kind,
                                            bool EmitDebugInfo) {
 
                                            DebugEmissionKind Kind,
                                            bool EmitDebugInfo) {
 
-  assert(((Lang <= dwarf::DW_LANG_OCaml && Lang >= dwarf::DW_LANG_C89) ||
+  assert(((Lang <= dwarf::DW_LANG_Fortran08 && Lang >= dwarf::DW_LANG_C89) ||
           (Lang <= dwarf::DW_LANG_hi_user && Lang >= dwarf::DW_LANG_lo_user)) &&
          "Invalid Language tag");
   assert(!Filename.empty() &&
           (Lang <= dwarf::DW_LANG_hi_user && Lang >= dwarf::DW_LANG_lo_user)) &&
          "Invalid Language tag");
   assert(!Filename.empty() &&