# 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:       16
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: default, 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

...
