| ; RUN: %llc_dwarf -filetype=obj -o - %s | llvm-dwarfdump -| FileCheck --implicit-check-not=DW_TAG --implicit-check-not=NULL %s | 
 | ; CHECK: DW_TAG_compile_unit | 
 | ; CHECK:   DW_AT_language	(DW_LANG_Rust) | 
 | ; CHECK:   DW_TAG_namespace | 
 | ; CHECK:     DW_TAG_enumeration_type | 
 | ; CHECK:     DW_AT_type (0x{{[0-9A-Fa-f]+}} "u8") | 
 | ; CHECK:     DW_AT_name	("E") | 
 | ; CHECK:       DW_TAG_enumerator | 
 | ; CHECK:       DW_TAG_enumerator | 
 | ; CHECK:       DW_TAG_subprogram | 
 | ; CHECK:         DW_AT_name	("f") | 
 | ; CHECK:         DW_TAG_formal_parameter | 
 | ; CHECK:         NULL | 
 | ; CHECK:       NULL | 
 | ; CHECK:     NULL | 
 | ; CHECK:   DW_TAG_base_type | 
 | ; CHECK:     DW_AT_name ("u8") | 
 | ; CHECK:   DW_TAG_pointer_type | 
 | ; CHECK:   NULL | 
 |  | 
 | ; This file comes from rustc output, with the input program | 
 | ;         pub enum E { A, B } | 
 | ;         impl E { | 
 | ;             pub fn f(&self) {} | 
 | ;         } | 
 | ; compiled with `rustc --crate-type=lib a.rs --emit llvm-ir -g` and | 
 | ; copying the resulting `a.ll` file to here. This was done with rustc | 
 | ; at nightly from 2021-09-28 (git 8f8092cc3), but rustc 1.57 should | 
 | ; produce similar or identical output. | 
 |  | 
 | ; ModuleID = 'a.a146b597-cgu.0' | 
 | source_filename = "a.a146b597-cgu.0" | 
 | target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" | 
 | target triple = "x86_64-apple-macosx10.7.0" | 
 |  | 
 | ; a::E::f | 
 | ; Function Attrs: uwtable | 
 | define void @_ZN1a1E1f17h4fcb50ce732fb2a7E(ptr align 1 dereferenceable(1) %self) unnamed_addr #0 !dbg !13 { | 
 | start: | 
 |   %self.dbg.spill = alloca ptr, align 8 | 
 |   store ptr %self, ptr %self.dbg.spill, align 8 | 
 |   call void @llvm.dbg.declare(metadata ptr %self.dbg.spill, metadata !19, metadata !DIExpression()), !dbg !21 | 
 |   ret void, !dbg !22 | 
 | } | 
 |  | 
 | ; Function Attrs: nofree nosync nounwind readnone speculatable willreturn | 
 | declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 | 
 |  | 
 | attributes #0 = { uwtable "frame-pointer"="all" "probe-stack"="__rust_probestack" "target-cpu"="core2" } | 
 | attributes #1 = { nofree nosync nounwind readnone speculatable willreturn } | 
 |  | 
 | !llvm.module.flags = !{!0, !1, !2} | 
 | !llvm.dbg.cu = !{!3} | 
 |  | 
 | !0 = !{i32 7, !"PIC Level", i32 2} | 
 | !1 = !{i32 2, !"Dwarf Version", i32 2} | 
 | !2 = !{i32 2, !"Debug Info Version", i32 3} | 
 | !3 = distinct !DICompileUnit(language: DW_LANG_Rust, file: !4, producer: "clang LLVM (rustc version 1.57.0-nightly (8f8092cc3 2021-09-28))", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !5) | 
 | !4 = !DIFile(filename: "a.rs/@/a.a146b597-cgu.0", directory: "/Users/augie") | 
 | !5 = !{!6} | 
 | !6 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "E", scope: !8, file: !7, baseType: !9, size: 8, align: 8, flags: DIFlagEnumClass, elements: !10) | 
 | !7 = !DIFile(filename: "<unknown>", directory: "") | 
 | !8 = !DINamespace(name: "a", scope: null) | 
 | !9 = !DIBasicType(name: "u8", size: 8, encoding: DW_ATE_unsigned) | 
 | !10 = !{!11, !12} | 
 | !11 = !DIEnumerator(name: "A", value: 0) | 
 | !12 = !DIEnumerator(name: "B", value: 1) | 
 | !13 = distinct !DISubprogram(name: "f", linkageName: "_ZN1a1E1f17h4fcb50ce732fb2a7E", scope: !6, file: !14, line: 3, type: !15, scopeLine: 3, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !3, templateParams: !20, retainedNodes: !18) | 
 | !14 = !DIFile(filename: "a.rs", directory: "/Users/augie", checksumkind: CSK_MD5, checksum: "ab4ce84c27ef6fd0be1ef78e8131faa8") | 
 | !15 = !DISubroutineType(types: !16) | 
 | !16 = !{null, !17} | 
 | !17 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "&E", baseType: !6, size: 64, align: 64, dwarfAddressSpace: 0) | 
 | !18 = !{!19} | 
 | !19 = !DILocalVariable(name: "self", arg: 1, scope: !13, file: !14, line: 3, type: !17) | 
 | !20 = !{} | 
 | !21 = !DILocation(line: 3, column: 14, scope: !13) | 
 | !22 = !DILocation(line: 3, column: 23, scope: !13) |