# Verify that a CFI instruction with no debug location
# does not result in a line-0 location in the assembler.
# RUN: %llc_dwarf -start-after=prologepilog -march=x86-64 -use-unknown-locations=Enable %s -o - | FileCheck %s
#
# CHECK-NOT: .loc 1 0
# CHECK:     .cfi_def_cfa_offset
# UNSUPPORTED: cygwin,mingw32,win32

--- |
  ; ModuleID = 'no-cfi-loc.ll'
  source_filename = "no-cfi-loc.ll"
  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  
  define void @foo() !dbg !6 {
  entry:
    call void @bar(), !dbg !8
    ret void, !dbg !9
  }
  
  declare void @bar()
  
  ; Function Attrs: nounwind
  declare void @llvm.stackprotector(i8*, i8**) #0
  
  attributes #0 = { nounwind }
  
  !llvm.dbg.cu = !{!0}
  !llvm.module.flags = !{!3, !4}
  !llvm.ident = !{!5}
  
  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 4.0.0 (trunk 288778)", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2)
  !1 = !DIFile(filename: "t.c", directory: "/home/probinson/projects/scratch")
  !2 = !{}
  !3 = !{i32 2, !"Dwarf Version", i32 4}
  !4 = !{i32 2, !"Debug Info Version", i32 3}
  !5 = !{!"clang version 4.0.0 (trunk 288778)"}
  !6 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, variables: !2)
  !7 = !DISubroutineType(types: !2)
  !8 = !DILocation(line: 3, column: 2, scope: !6)
  !9 = !DILocation(line: 4, column: 1, scope: !6)

...
---
name:            foo
alignment:       4
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
tracksRegLiveness: true
calleeSavedRegisters: [ '%bh', '%bl', '%bp', '%bpl', '%bx', '%ebp', '%ebx', 
                        '%rbp', '%rbx', '%r12', '%r13', '%r14', '%r15', 
                        '%r12b', '%r13b', '%r14b', '%r15b', '%r12d', '%r13d', 
                        '%r14d', '%r15d', '%r12w', '%r13w', '%r14w', '%r15w' ]
frameInfo:       
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       8
  offsetAdjustment: 0
  maxAlignment:    0
  adjustsStack:    true
  hasCalls:        true
  maxCallFrameSize: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
body:             |
  bb.0.entry:
    frame-setup PUSH64r undef %rax, implicit-def %rsp, implicit %rsp, debug-location !8
    CFI_INSTRUCTION def_cfa_offset 16
    CALL64pcrel32 @bar, csr_64, implicit %rsp, implicit-def %rsp, debug-location !8
    %rax = POP64r implicit-def %rsp, implicit %rsp, debug-location !9
    RET 0, debug-location !9

...
