# Check that subsequent .loc 0 0 directives are collapsed.

# RUN: llc -start-before=machine-cp -O2 -filetype=asm -mtriple=x86_64-apple-macosx10.9.0 -o - %s | FileCheck %s

# CHECK: Ltmp0:
# CHECK: .loc 1 0 0 prologue_end
# CHECK-NOT: .loc 1 0 0
# CHECK: .loc 1 37 1

--- |
  ; ModuleID = '<stdin>'
  source_filename = "<stdin>"
  target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
  target triple = "x86_64-apple-macosx10.9.0"

  %swift.opaque = type opaque
  %swift.metadata_response = type { %swift.type*, i64 }
  %swift.type = type { i64 }

  define hidden swiftcc void @"$S4main1fyyF"() !dbg !5 {
  entry:
    %s1.addr = alloca i8*, align 8
    %0 = bitcast i8** %s1.addr to %swift.opaque**
    store %swift.opaque* null, %swift.opaque** %0, align 8
    %1 = call swiftcc %swift.metadata_response @"$S16resilient_struct4SizeVMa"(i64 0) #1, !dbg !10
    %2 = extractvalue %swift.metadata_response %1, 0, !dbg !10
    %3 = bitcast %swift.type* %2 to i8***, !dbg !10
    %4 = getelementptr inbounds i8**, i8*** %3, i64 -1, !dbg !10
    ret void, !dbg !12
  }

  declare swiftcc %swift.metadata_response @"$S16resilient_struct4SizeVMa"(i64)

  ; Function Attrs: nounwind
  declare void @llvm.stackprotector(i8*, i8**) #0

  attributes #0 = { nounwind }
  attributes #1 = { nounwind readnone }

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

  !0 = distinct !DICompileUnit(language: DW_LANG_Swift, file: !1, producer: "Swift version 4.2.1-dev effective-3.4.1 (LLVM 4ba03d9389, Clang 78aa734eee, Swift f4134ebef6)", isOptimized: false, runtimeVersion: 4, emissionKind: FullDebug, enums: !2, imports: !2)
  !1 = !DIFile(filename: "struct_resilience.swift", directory: "/Users/jonas/swift")
  !2 = !{}
  !3 = !{i32 2, !"Dwarf Version", i32 4}
  !4 = !{i32 2, !"Debug Info Version", i32 3}
  !5 = distinct !DISubprogram(name: "f", linkageName: "$S4main1fyyF", scope: !0, file: !6, line: 23, type: !7, scopeLine: 23, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)
  !6 = !DIFile(filename: "struct_resilience.swift", directory: "/Users/jonas/swift/swift/test/DebugInfo")
  !7 = !DISubroutineType(types: !8)
  !8 = !{!9}
  !9 = !DICompositeType(tag: DW_TAG_structure_type, name: "$SytD", file: !6, elements: !2, runtimeLang: DW_LANG_Swift, identifier: "$SytD")
  !10 = !DILocation(line: 0, scope: !11)
  !11 = distinct !DILexicalBlock(scope: !5, file: !6, line: 23, column: 10)
  !12 = !DILocation(line: 37, column: 1, scope: !11)

...
---
name:            '$S4main1fyyF'
alignment:       4
exposesReturnsTwice: false
legalized:       false
regBankSelected: false
selected:        false
failedISel:      false
tracksRegLiveness: true
hasWinCFI:       false
registers:       []
liveins:         []
frameInfo:
  isFrameAddressTaken: false
  isReturnAddressTaken: false
  hasStackMap:     false
  hasPatchPoint:   false
  stackSize:       0
  offsetAdjustment: 0
  maxAlignment:    8
  adjustsStack:    false
  hasCalls:        true
  stackProtector:  ''
  maxCallFrameSize: 4294967295
  cvBytesOfCalleeSavedRegisters: 0
  hasOpaqueSPAdjustment: false
  hasVAStart:      false
  hasMustTailInVarArgFunc: false
  localFrameSize:  0
  savePoint:       ''
  restorePoint:    ''
fixedStack:      []
stack:
  - { id: 0, name: s1.addr, type: default, offset: 0, size: 8, alignment: 8,
      stack-id: 0, callee-saved-register: '', callee-saved-restored: true,
      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
constants:       []
body:             |
  bb.0.entry:
    MOV64mi32 %stack.0.s1.addr, 1, $noreg, 0, $noreg, 0 :: (store 8 into %ir.0)
    ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !10
    dead $edi = MOV32r0 implicit-def dead $eflags, implicit-def $rdi, debug-location !10
    CALL64pcrel32 @"$S16resilient_struct4SizeVMa", csr_64, implicit $rsp, implicit $ssp, implicit killed $rdi, implicit-def $rsp, implicit-def $ssp, implicit-def dead $rax, implicit-def dead $rdx, debug-location !10
    ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp, debug-location !10
    RET 0, debug-location !12

...
