Skip to content

Commit

Permalink
[CodeView] Recognize Fortran95 as Fortran instead of MASM
Browse files Browse the repository at this point in the history
Map Fortran95 sources to Fortran so the CodeView language is not emitted as
MASM.

Differential Revision: https://reviews.llvm.org/D110330
  • Loading branch information
bwyma committed Sep 30, 2021
1 parent adc18ad commit bafd8b1
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
1 change: 1 addition & 0 deletions llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
Expand Up @@ -746,6 +746,7 @@ static SourceLanguage MapDWLangToCVLang(unsigned DWLang) {
return SourceLanguage::Cpp;
case dwarf::DW_LANG_Fortran77:
case dwarf::DW_LANG_Fortran90:
case dwarf::DW_LANG_Fortran95:
case dwarf::DW_LANG_Fortran03:
case dwarf::DW_LANG_Fortran08:
return SourceLanguage::Fortran;
Expand Down
67 changes: 67 additions & 0 deletions llvm/test/DebugInfo/COFF/language.ll
@@ -0,0 +1,67 @@
; RUN: sed -e 's/<LANG1>/DW_LANG_C/;s/<LANG2>/C/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_C89/;s/<LANG2>/C/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_C99/;s/<LANG2>/C/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_C11/;s/<LANG2>/C/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_C_plus_plus/;s/<LANG2>/Cpp/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_C_plus_plus_03/;s/<LANG2>/Cpp/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_C_plus_plus_11/;s/<LANG2>/Cpp/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_C_plus_plus_14/;s/<LANG2>/Cpp/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_Fortran77/;s/<LANG2>/Fortran/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_Fortran90/;s/<LANG2>/Fortran/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_Fortran95/;s/<LANG2>/Fortran/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_Fortran03/;s/<LANG2>/Fortran/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t
;
; RUN: sed -e 's/<LANG1>/DW_LANG_Fortran08/;s/<LANG2>/Fortran/' %s > %t
; RUN: llc -filetype=obj -o - %t | llvm-readobj --codeview - | FileCheck %t

; CHECK: CodeViewDebugInfo [
; CHECK: Subsection [
; CHECK: SubSectionType: Symbols (0xF1)
; CHECK: Compile3Sym {
; CHECK-NEXT: Kind: S_COMPILE3 (0x113C)
; CHECK-NEXT: Language: <LANG2>
; CHECK-NEXT: Flags [ (0x0)
; CHECK-NEXT: ]
; CHECK-NEXT: Machine: X64 (0xD0)
; CHECK-NEXT: FrontendVersion: {{[0-9.]*}}
; CHECK-NEXT: BackendVersion: {{[0-9.]*}}
; CHECK-NEXT: VersionName: clang
; CHECK-NEXT: }
; CHECK: ]
; CHECK: ]

; ModuleID = 'empty'
source_filename = "empty"
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc19.0.24215"

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!2, !3}

!0 = distinct !DICompileUnit(language: <LANG1>, file: !1, producer: "clang")
!1 = !DIFile(filename: "empty", directory: "path/to")
!2 = !{i32 2, !"CodeView", i32 1}
!3 = !{i32 2, !"Debug Info Version", i32 3}

0 comments on commit bafd8b1

Please sign in to comment.