# RUN: llc -O1 -emit-call-site-info -filetype=obj -mtriple thumbv7em-apple-unknown-macho -start-after=machineverifier %s -o %t.o
# RUN: llvm-dwarfdump %t.o | FileCheck %s

# Crash test, reduced from:
#
# a(double);
# b(double c) {
#   d();
#   a(c);
# }

# CHECK: DW_TAG_GNU_call_site
# CHECK-NEXT: DW_AT_abstract_origin {{.*}} "a"
# CHECK-NOT: call_site_parameter

--- |
  ; ModuleID = 'unreduced.c'
  source_filename = "unreduced.c"
  target datalayout = "e-m:o-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
  target triple = "thumbv7em-apple-unknown-macho"
  ; Function Attrs: nounwind optsize uwtable
  define arm_aapcs_vfpcc i32 @b(double %c) local_unnamed_addr #0 !dbg !16 {
  entry:
    call void @llvm.dbg.value(metadata double %c, metadata !18, metadata !DIExpression()), !dbg !19
    %call = tail call arm_aapcs_vfpcc i32 bitcast (i32 (...)* @d to i32 ()*)(), !dbg !20
    %call1 = tail call arm_aapcs_vfpcc i32 @a(double %c), !dbg !21
    ret i32 undef, !dbg !22
  }
  declare arm_aapcs_vfpcc i32 @d(...) local_unnamed_addr #0
  declare !dbg !4 arm_aapcs_vfpcc i32 @a(double) local_unnamed_addr #0
  declare void @llvm.dbg.value(metadata, metadata, metadata)
  declare void @llvm.stackprotector(i8*, i8**)

  attributes #0 = { "disable-tail-calls"="false" "frame-pointer"="all" }

  !llvm.dbg.cu = !{!0}
  !llvm.module.flags = !{!10, !11, !12, !13, !14}
  !llvm.ident = !{!15}

  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 10.0.0 (git@github.com:apple/llvm-project.git 6203ec90d0bb0fd705fc0ad00ee263e5579aa709)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, nameTableKind: None)
  !1 = !DIFile(filename: "jnyn_freeBSD.c", directory: "/Users/vsk/tmp/jnyn")
  !2 = !{}
  !3 = !{!4}
  !4 = !DISubprogram(name: "a", scope: !5, file: !5, line: 1, type: !6, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !2)
  !5 = !DIFile(filename: "unreduced.c", directory: "/Users/vsk/tmp/jnyn")
  !6 = !DISubroutineType(types: !7)
  !7 = !{!8, !9}
  !8 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
  !9 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float)
  !10 = !{i32 7, !"Dwarf Version", i32 4}
  !11 = !{i32 2, !"Debug Info Version", i32 3}
  !12 = !{i32 1, !"wchar_size", i32 4}
  !13 = !{i32 1, !"min_enum_size", i32 4}
  !14 = !{i32 7, !"PIC Level", i32 2}
  !15 = !{!"clang version 10.0.0 (git@github.com:apple/llvm-project.git 6203ec90d0bb0fd705fc0ad00ee263e5579aa709)"}
  !16 = distinct !DISubprogram(name: "b", scope: !5, file: !5, line: 2, type: !6, scopeLine: 2, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !17)
  !17 = !{!18}
  !18 = !DILocalVariable(name: "c", arg: 1, scope: !16, file: !5, line: 2, type: !9)
  !19 = !DILocation(line: 0, scope: !16)
  !20 = !DILocation(line: 3, column: 3, scope: !16)
  !21 = !DILocation(line: 4, column: 3, scope: !16)
  !22 = !DILocation(line: 5, column: 1, scope: !16)

...
---
name:            b
callSites:
  - { bb: 0, offset: 12, fwdArgRegs: [] }
  - { bb: 0, offset: 18, fwdArgRegs:
      - { arg: 0, reg: '$d0' } }
body:             |
  bb.0.entry:
    liveins: $d0, $lr, $d8

    DBG_VALUE $d0, $noreg, !18, !DIExpression(), debug-location !19
    frame-setup tPUSH 14, $noreg, $r7, killed $lr, implicit-def $sp, implicit $sp
    frame-setup CFI_INSTRUCTION def_cfa_offset 8
    frame-setup CFI_INSTRUCTION offset $lr, -4
    frame-setup CFI_INSTRUCTION offset $r7, -8
    $r7 = frame-setup tMOVr $sp, 14, $noreg
    frame-setup CFI_INSTRUCTION def_cfa_register $r7
    $sp = frame-setup VSTMDDB_UPD $sp, 14, $noreg, killed $d8
    frame-setup CFI_INSTRUCTION offset $d8, -16
    $s16 = VMOVS killed $s0, 14, $noreg
    $s17 = VMOVS killed $s1, 14, $noreg, implicit-def $d8
    DBG_VALUE $d8, $noreg, !18, !DIExpression(), debug-location !19
    tBL 14, $noreg, @d, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp, implicit-def dead $r0, debug-location !20
    $s0 = VMOVS killed $s16, 14, $noreg, debug-location !21
    $s1 = VMOVS killed $s17, 14, $noreg, implicit-def $d0, debug-location !21
    DBG_VALUE $d0, $noreg, !18, !DIExpression(), debug-location !19
    $sp = VLDMDIA_UPD $sp, 14, $noreg, def $d8, debug-location !21
    $sp = t2LDMIA_UPD $sp, 14, $noreg, def $r7, def $lr, debug-location !21
    tTAILJMPd @a, 14, $noreg, implicit $sp, implicit $sp, implicit killed $d0, debug-location !21

...
