# Test call site parameter encoding in DWARFv4.
# When the debugger tuning is set to gdb, use GNU opcodes.
# For lldb, use the standard DWARF5 opcodes.

# RUN: llc -debug-entry-values -debugger-tune=gdb -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-GNU
# RUN: llc -debug-entry-values -debugger-tune=lldb -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5
#
# extern void foo(int *a, int b, int c, int d, int e, int f);
# extern int getVal();
#
# void baa(int arg1, int arg2, int arg3) {
#   int local1 = getVal();
#   foo(&local1, arg2, 10, 15, arg3 + 3, arg1 + arg2);
# }
#
# CHECK-GNU: DW_TAG_GNU_call_site
# CHECK-GNU:   DW_AT_abstract_origin {{.*}} "getVal"
#
# CHECK-GNU:       DW_TAG_GNU_call_site
# CHECK-GNU:         DW_AT_abstract_origin {{.*}} "foo"
# CHECK-GNU:         DW_AT_low_pc {{.*}}
# CHECK-GNU-EMPTY:
# CHECK-GNU:         DW_TAG_GNU_call_site_parameter
# CHECK-GNU-NEXT:      DW_AT_location      (DW_OP_reg2 RCX)
# CHECK-GNU-NEXT:      DW_AT_GNU_call_site_value   (DW_OP_lit15)
# CHECK-GNU:         DW_TAG_GNU_call_site_parameter
# CHECK-GNU-NEXT:      DW_AT_location      (DW_OP_reg1 RDX)
# CHECK-GNU-NEXT:      DW_AT_GNU_call_site_value   (DW_OP_lit10)
# CHECK-GNU:         DW_TAG_GNU_call_site_parameter
# CHECK-GNU-NEXT:      DW_AT_location      (DW_OP_reg4 RSI)
# CHECK-GNU-NEXT:      DW_AT_GNU_call_site_value   (DW_OP_breg3 RBX+0)
# CHECK-GNU:         DW_TAG_GNU_call_site_parameter
# CHECK-GNU-NEXT:      DW_AT_location      (DW_OP_reg5 RDI)
# CHECK-GNU-NEXT:      DW_AT_GNU_call_site_value   (DW_OP_fbreg +12)
# CHECK-GNU:         DW_TAG_GNU_call_site_parameter
# CHECK-GNU-NEXT:      DW_AT_location      (DW_OP_reg9 R9)
# CHECK-GNU-NEXT:      DW_AT_GNU_call_site_value   (DW_OP_breg15 R15+0, DW_OP_breg3 RBX+0, DW_OP_plus)
# CHECK-GNU:         DW_TAG_GNU_call_site_parameter
# CHECK-GNU-NEXT:      DW_AT_location      (DW_OP_reg8 R8)
# CHECK-GNU-NEXT:      DW_AT_GNU_call_site_value   (DW_OP_breg14 R14+3)

# CHECK-DWARF5: [[getValue_SP:.*]]: DW_TAG_subprogram
# CHECK-DWARF5-NEXT: DW_AT_name      ("getVal")

# CHECK-DWARF5: [[foo_SP:.*]]: DW_TAG_subprogram
# CHECK-DWARF5-NEXT: DW_AT_name      ("foo")

# CHECK-DWARF5: DW_TAG_call_site
# CHECK-DWARF5:   DW_AT_call_origin ([[getValue_SP]])
#
# CHECK-DWARF5: DW_TAG_call_site
# CHECK-DWARF5:   DW_AT_call_origin ([[foo_SP]])
# CHECK-DWARF5:   DW_AT_call_return_pc {{.*}}
# CHECK-DWARF5-EMPTY:
# CHECK-DWARF5:         DW_TAG_call_site_parameter
# CHECK-DWARF5-NEXT:      DW_AT_location      (DW_OP_reg2 RCX)
# CHECK-DWARF5-NEXT:      DW_AT_call_value   (DW_OP_lit15)
# CHECK-DWARF5:         DW_TAG_call_site_parameter
# CHECK-DWARF5-NEXT:      DW_AT_location      (DW_OP_reg1 RDX)
# CHECK-DWARF5-NEXT:      DW_AT_call_value   (DW_OP_lit10)
# CHECK-DWARF5:         DW_TAG_call_site_parameter
# CHECK-DWARF5-NEXT:      DW_AT_location      (DW_OP_reg4 RSI)
# CHECK-DWARF5-NEXT:      DW_AT_call_value   (DW_OP_breg3 RBX+0)
# CHECK-DWARF5:         DW_TAG_call_site_parameter
# CHECK-DWARF5-NEXT:      DW_AT_location      (DW_OP_reg5 RDI)
# CHECK-DWARF5-NEXT:      DW_AT_call_value   (DW_OP_fbreg +12)
# CHECK-DWARF5:         DW_TAG_call_site_parameter
# CHECK-DWARF5-NEXT:      DW_AT_location      (DW_OP_reg9 R9)
# CHECK-DWARF5-NEXT:      DW_AT_call_value   (DW_OP_breg15 R15+0, DW_OP_breg3 RBX+0, DW_OP_plus)
# CHECK-DWARF5:         DW_TAG_call_site_parameter
# CHECK-DWARF5-NEXT:      DW_AT_location      (DW_OP_reg8 R8)
# CHECK-DWARF5-NEXT:      DW_AT_call_value   (DW_OP_breg14 R14+3)

--- |
  ; ModuleID = 'test.c'
  source_filename = "test.c"
  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
  
  ; Function Attrs: nounwind uwtable
  define dso_local void @baa(i32 %arg1, i32 %arg2, i32 %arg3) local_unnamed_addr !dbg !10 {
  entry:
    %local1 = alloca i32, align 4
    call void @llvm.dbg.value(metadata i32 %arg1, metadata !15, metadata !DIExpression()), !dbg !19
    call void @llvm.dbg.value(metadata i32 %arg2, metadata !16, metadata !DIExpression()), !dbg !20
    call void @llvm.dbg.value(metadata i32 %arg3, metadata !17, metadata !DIExpression()), !dbg !21
    %0 = bitcast i32* %local1 to i8*, !dbg !22
    %call = tail call i32 (...) @getVal(), !dbg !23
    call void @llvm.dbg.value(metadata i32 %call, metadata !18, metadata !DIExpression()), !dbg !24
    store i32 %call, i32* %local1, align 4, !dbg !24
    %add = add nsw i32 %arg3, 3, !dbg !24
    %add1 = add nsw i32 %arg2, %arg1, !dbg !24
    call void @llvm.dbg.value(metadata i32* %local1, metadata !18, metadata !DIExpression(DW_OP_deref)), !dbg !24
    call void @foo(i32* nonnull %local1, i32 %arg2, i32 10, i32 15, i32 %add, i32 %add1), !dbg !24
    ret void, !dbg !24
  }
  
  declare !dbg !4 dso_local i32 @getVal(...) local_unnamed_addr
  
  declare !dbg !5 dso_local void @foo(i32*, i32, i32, i32, i32, i32) local_unnamed_addr
  
  ; Function Attrs: nounwind readnone speculatable
  declare void @llvm.dbg.value(metadata, metadata, metadata)
  
  !llvm.dbg.cu = !{!0}
  !llvm.module.flags = !{!6, !7, !8}
  !llvm.ident = !{!9}
  
  !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 9.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, nameTableKind: None)
  !1 = !DIFile(filename: "test.c", directory: "/dir")
  !2 = !{}
  !3 = !{!4, !5}
  !4 = !DISubprogram(name: "getVal", scope: !1, file: !1, line: 2, spFlags: DISPFlagOptimized, retainedNodes: !2)
  !5 = !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !2)
  !6 = !{i32 2, !"Dwarf Version", i32 4}
  !7 = !{i32 2, !"Debug Info Version", i32 3}
  !8 = !{i32 1, !"wchar_size", i32 4}
  !9 = !{!"clang version 9.0.0"}
  !10 = distinct !DISubprogram(name: "baa", scope: !1, file: !1, line: 4, type: !11, scopeLine: 4, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !14)
  !11 = !DISubroutineType(types: !12)
  !12 = !{null, !13, !13, !13}
  !13 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
  !14 = !{!15, !16, !17, !18}
  !15 = !DILocalVariable(name: "arg1", arg: 1, scope: !10, file: !1, line: 4, type: !13, flags: DIFlagArgumentNotModified)
  !16 = !DILocalVariable(name: "arg2", arg: 2, scope: !10, file: !1, line: 4, type: !13, flags: DIFlagArgumentNotModified)
  !17 = !DILocalVariable(name: "arg3", arg: 3, scope: !10, file: !1, line: 4, type: !13, flags: DIFlagArgumentNotModified)
  !18 = !DILocalVariable(name: "local1", scope: !10, file: !1, line: 5, type: !13)
  !19 = !DILocation(line: 4, column: 14, scope: !10)
  !20 = !DILocation(line: 4, column: 24, scope: !10)
  !21 = !DILocation(line: 4, column: 34, scope: !10)
  !22 = !DILocation(line: 5, column: 3, scope: !10)
  !23 = !DILocation(line: 5, column: 16, scope: !10)
  !24 = !DILocation(line: 5, column: 7, scope: !10)

...
---
name:            baa
liveins:         
  - { reg: '$edi', virtual-reg: '' }
  - { reg: '$esi', virtual-reg: '' }
  - { reg: '$edx', virtual-reg: '' }
callSites:       
  - { bb: 0, offset: 21, fwdArgRegs: [] }
  - { bb: 0, offset: 31, fwdArgRegs: 
      - { arg: 0, reg: '$rdi' }
      - { arg: 1, reg: '$esi' }
      - { arg: 2, reg: '$edx' }
      - { arg: 3, reg: '$ecx' }
      - { arg: 4, reg: '$r8d' }
      - { arg: 5, reg: '$r9d' } }
body:             |
  bb.0.entry:
    liveins: $edi, $edx, $esi, $r15, $r14, $rbx
  
    DBG_VALUE $edi, $noreg, !15, !DIExpression(), debug-location !19
    DBG_VALUE $esi, $noreg, !16, !DIExpression(), debug-location !20
    DBG_VALUE $edx, $noreg, !17, !DIExpression(), debug-location !21
    frame-setup PUSH64r killed $r15, implicit-def $rsp, implicit $rsp
    CFI_INSTRUCTION def_cfa_offset 16
    frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp
    CFI_INSTRUCTION def_cfa_offset 24
    frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp
    CFI_INSTRUCTION def_cfa_offset 32
    $rsp = frame-setup SUB64ri8 $rsp, 16, implicit-def dead $eflags
    CFI_INSTRUCTION def_cfa_offset 48
    CFI_INSTRUCTION offset $rbx, -32
    CFI_INSTRUCTION offset $r14, -24
    CFI_INSTRUCTION offset $r15, -16
    $r14d = MOV32rr $edx, implicit-def $r14
    $ebx = MOV32rr $esi, implicit-def $rbx
    $r15d = MOV32rr $edi, implicit-def $r15
    DBG_VALUE $r14d, $noreg, !17, !DIExpression(), debug-location !21
    DBG_VALUE $ebx, $noreg, !16, !DIExpression(), debug-location !20
    DBG_VALUE $r15d, $noreg, !15, !DIExpression(), debug-location !19
    dead $eax = XOR32rr undef $eax, undef $eax, implicit-def dead $eflags, implicit-def $al, debug-location !23
    CALL64pcrel32 @getVal, csr_64, implicit $rsp, implicit $ssp, implicit $al, implicit-def $rsp, implicit-def $ssp, implicit-def $eax, debug-location !23
    DBG_VALUE $eax, $noreg, !18, !DIExpression(), debug-location !24
    MOV32mr $rsp, 1, $noreg, 12, $noreg, killed renamable $eax, debug-location !24 :: (store 4 into %ir.local1)
    renamable $r8d = LEA64_32r killed renamable $r14, 1, $noreg, 3, $noreg, debug-location !24
    renamable $r9d = LEA64_32r killed renamable $r15, 1, renamable $rbx, 0, $noreg, debug-location !24
    DBG_VALUE $rsp, $noreg, !18, !DIExpression(DW_OP_plus_uconst, 12, DW_OP_deref), debug-location !24
    renamable $rdi = LEA64r $rsp, 1, $noreg, 12, $noreg
    $esi = MOV32rr $ebx, implicit killed $rbx, debug-location !24
    $edx = MOV32ri 10, debug-location !24
    $ecx = MOV32ri 15, debug-location !24
    CALL64pcrel32 @foo, csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit $esi, implicit $edx, implicit killed $ecx, implicit $r8d, implicit $r9d, implicit-def $rsp, implicit-def $ssp, debug-location !24
    $rsp = frame-destroy ADD64ri8 $rsp, 16, implicit-def dead $eflags, debug-location !24
    CFI_INSTRUCTION def_cfa_offset 32, debug-location !24
    $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp, debug-location !24
    CFI_INSTRUCTION def_cfa_offset 24, debug-location !24
    $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp, debug-location !24
    CFI_INSTRUCTION def_cfa_offset 16, debug-location !24
    $r15 = frame-destroy POP64r implicit-def $rsp, implicit $rsp, debug-location !24
    CFI_INSTRUCTION def_cfa_offset 8, debug-location !24
    RETQ debug-location !24

...
