; RUN: opt -run-twice -verify -S -o - %s | FileCheck %s

; The ValueMap shared between CloneFunctionInto calls within CloneModule needs
; to contain identity mappings for all of the DISubprogram's to prevent them
; from being duplicated by MapMetadata / RemapInstruction calls, this is
; achieved via DebugInfoFinder collecting all the DISubprogram's. However,
; CloneFunctionInto was missing calls into DebugInfoFinder for functions w/o
; DISubprogram's attached, but still referring DISubprogram's from within.
;
; This is to make sure we don't regress on that.

; Derived from the following C-snippet
;
;   int inlined(int j);
;   __attribute__((nodebug)) int nodebug(int k) { return inlined(k); }
;   __attribute__((always_inline)) int inlined(int j) { return j * 2; }
;
; compiled with `clang -O1 -g3 -emit-llvm -S` by removing
;
;   call void @llvm.dbg.value(metadata i32 %k, metadata !8, metadata !DIExpression()), !dbg !14
;
; line from @nodebug function.

; The @llvm.dbg.value call is manually removed from @nodebug as not having
; it there also may cause an incorrect remapping of the call in a case of a
; regression, not just a duplication of a DISubprogram. Namely, the call's
; metadata !8 2nd argument and the !dbg !14 debug location may get remapped
; to reference different copies of the DISubprogram, which is verified by IR
; Verifier, while having DISubprogram duplicates is not.

; CHECK:     DISubprogram
; CHECK-NOT: DISubprogram

source_filename = "clone-module.c"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx"

; Function Attrs: nounwind readnone ssp uwtable
define i32 @nodebug(i32 %k) local_unnamed_addr #0 {
entry:
  %mul.i = shl nsw i32 %k, 1, !dbg !15
  ret i32 %mul.i
}

; Function Attrs: alwaysinline nounwind readnone ssp uwtable
define i32 @inlined(i32 %j) local_unnamed_addr #1 !dbg !9 {
entry:
  call void @llvm.dbg.value(metadata i32 %j, metadata !8, metadata !DIExpression()), !dbg !14
  %mul = shl nsw i32 %j, 1, !dbg !15
  ret i32 %mul, !dbg !16
}

; Function Attrs: nounwind readnone speculatable
declare void @llvm.dbg.value(metadata, metadata, metadata) #2

attributes #0 = { nounwind readnone ssp uwtable }
attributes #1 = { alwaysinline nounwind readnone ssp uwtable }
attributes #2 = { nounwind readnone speculatable }

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!3, !4, !5, !6}
!llvm.ident = !{!7}

!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 7.0.0 (https://git.llvm.org/git/clang.git/ 195459d046e795f5952f7d2121e505eeb59c5574) (https://git.llvm.org/git/llvm.git/ 69ec7d5667e9928db8435bfbee0da151c85a91c9)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "clone-module.c", directory: "/somewhere")
!2 = !{}
!3 = !{i32 2, !"Dwarf Version", i32 4}
!4 = !{i32 2, !"Debug Info Version", i32 3}
!5 = !{i32 1, !"wchar_size", i32 4}
!6 = !{i32 7, !"PIC Level", i32 2}
!7 = !{!"clang version 7.0.0 (https://git.llvm.org/git/clang.git/ 195459d046e795f5952f7d2121e505eeb59c5574) (https://git.llvm.org/git/llvm.git/ 69ec7d5667e9928db8435bfbee0da151c85a91c9)"}
!8 = !DILocalVariable(name: "j", arg: 1, scope: !9, file: !1, line: 3, type: !12)
!9 = distinct !DISubprogram(name: "inlined", scope: !1, file: !1, line: 3, type: !10, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: true, unit: !0, retainedNodes: !13)
!10 = !DISubroutineType(types: !11)
!11 = !{!12, !12}
!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
!13 = !{!8}
!14 = !DILocation(line: 3, column: 48, scope: !9)
!15 = !DILocation(line: 3, column: 62, scope: !9)
!16 = !DILocation(line: 3, column: 53, scope: !9)
