14cd8e9b1SWei Mi; Test the profile _Z3sumii won't be mistakenly annotated to foo 24cd8e9b1SWei Mi; when '-sample-profile-merge-inlinee' is enabled. When the mistake 34cd8e9b1SWei Mi; happens, there will be a "No debug information found" warning message. 44cd8e9b1SWei Mi; RUN: opt < %s -passes=sample-profile \ 54cd8e9b1SWei Mi; RUN: -sample-profile-file=%S/Inputs/inline-mergeprof.prof \ 64cd8e9b1SWei Mi; RUN: -sample-profile-merge-inlinee=true -S 2>&1| FileCheck %s 74cd8e9b1SWei Mi 84cd8e9b1SWei Mi@.str = private unnamed_addr constant [11 x i8] c"sum is %d\0A\00", align 1 9*0271ae65SFangrui Songdeclare void @__cxa_call_unexpected(ptr) 104cd8e9b1SWei Mideclare i32 @__gxx_personality_v0(...) 114cd8e9b1SWei Mideclare i32 @_Z3subii(i32 %x, i32 %y) 124cd8e9b1SWei Mi 13*0271ae65SFangrui Songdefine i32 @main() "use-sample-profile" nounwind uwtable ssp personality ptr @__gxx_personality_v0 !dbg !6 { 144cd8e9b1SWei Mientry: 154cd8e9b1SWei Mi %retval = alloca i32, align 4 164cd8e9b1SWei Mi %s = alloca i32, align 4 174cd8e9b1SWei Mi %i = alloca i32, align 4 18*0271ae65SFangrui Song %tmp = load i32, ptr %i, align 4, !dbg !8 19*0271ae65SFangrui Song %tmp1 = load i32, ptr %s, align 4, !dbg !8 204cd8e9b1SWei Mi %call = invoke i32 @foo(i32 %tmp, i32 %tmp1) 214cd8e9b1SWei Mi to label %cont unwind label %lpad, !dbg !8 224cd8e9b1SWei Mi; CHECK-NOT: warning: No debug information found in function foo 234cd8e9b1SWei Mi; CHECK: invoke i32 @foo 244cd8e9b1SWei Micont: 25*0271ae65SFangrui Song store i32 %call, ptr %s, align 4, !dbg !8 264cd8e9b1SWei Mi ret i32 0, !dbg !11 274cd8e9b1SWei Milpad: 28*0271ae65SFangrui Song %lptmp0 = landingpad { ptr, i32 } 29*0271ae65SFangrui Song filter [0 x ptr] zeroinitializer 30*0271ae65SFangrui Song %lptmp1 = extractvalue { ptr, i32 } %lptmp0, 0 31*0271ae65SFangrui Song tail call void @__cxa_call_unexpected(ptr %lptmp1) noreturn nounwind 324cd8e9b1SWei Mi unreachable 334cd8e9b1SWei Mi} 344cd8e9b1SWei Mi 354cd8e9b1SWei Midefine i32 @foo(i32 %x, i32 %y) #0 { 364cd8e9b1SWei Mientry: 374cd8e9b1SWei Mi %add = add nsw i32 %x, %y 384cd8e9b1SWei Mi ret i32 %add 394cd8e9b1SWei Mi} 404cd8e9b1SWei Mi 414cd8e9b1SWei Miattributes #0 = { "use-sample-profile" } 424cd8e9b1SWei Mi 43*0271ae65SFangrui Songdeclare i32 @printf(ptr, ...) 444cd8e9b1SWei Mi 454cd8e9b1SWei Mi!llvm.dbg.cu = !{!0} 464cd8e9b1SWei Mi!llvm.module.flags = !{!3, !4} 474cd8e9b1SWei Mi!llvm.ident = !{!5} 484cd8e9b1SWei Mi 494cd8e9b1SWei Mi!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.5 ", isOptimized: false, runtimeVersion: 0, emissionKind: NoDebug, enums: !2, retainedTypes: !2, globals: !2, imports: !2) 504cd8e9b1SWei Mi!1 = !DIFile(filename: "calls.cc", directory: ".") 514cd8e9b1SWei Mi!2 = !{} 524cd8e9b1SWei Mi!3 = !{i32 2, !"Dwarf Version", i32 4} 534cd8e9b1SWei Mi!4 = !{i32 1, !"Debug Info Version", i32 3} 544cd8e9b1SWei Mi!5 = !{!"clang version 3.5 "} 554cd8e9b1SWei Mi!6 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 7, type: !7, scopeLine: 7, virtualIndex: 6, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) 564cd8e9b1SWei Mi!7 = !DISubroutineType(types: !2) 574cd8e9b1SWei Mi!8 = !DILocation(line: 10, scope: !9) 584cd8e9b1SWei Mi!9 = !DILexicalBlockFile(scope: !10, file: !1, discriminator: 2) 594cd8e9b1SWei Mi!10 = distinct !DILexicalBlock(scope: !6, file: !1, line: 10) 604cd8e9b1SWei Mi!11 = !DILocation(line: 12, scope: !6) 61