brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.8 KiB · 25f81f3 Raw
187 lines · plain
1; RUN: llc -O0 %s -o - -filetype=obj \2; RUN:   | llvm-dwarfdump -statistics - | FileCheck %s3 4; This test serves as a baseline / sanity-check for stats-inlining-multi-cu.ll5; The results for both tests should be identical.6 7; CHECK:      "#functions": 4,8; CHECK:      "#out-of-line functions": 3,9; CHECK:      "#inlined functions": 2,10; CHECK:      "#unique source variables": 4,11; CHECK-NEXT: "#source variables": 6,12; CHECK-NEXT: "#source variables with location": 6,13 14;header.h:15;extern "C" int getchar();16;template<typename T> T __attribute__((always_inline)) inlined() {17;  if (getchar()=='a') {18;    int i = getchar();19;    return i;20;  } else {21;    int i = 'a';22;    return i;23;  }24;}25;ab.cpp26;#include <header.h>27;int b();28;int a() {29;  int a = inlined<int>();30;  return a+1;31;}32; 33;int b() {34;  int b = inlined<int>();35;  return b+1;36;}37;int main() {38;  return a() + b();39;}40 41 42; ModuleID = 'a.cpp'43source_filename = "a.cpp"44target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"45target triple = "x86_64-apple-macosx10.14.0"46 47; Function Attrs: noinline optnone ssp uwtable48define i32 @_Z1av() #0 !dbg !8 {49entry:50  %retval.i = alloca i32, align 451  %i.i = alloca i32, align 452  call void @llvm.dbg.declare(metadata ptr %i.i, metadata !12, metadata !DIExpression()), !dbg !1953  %i2.i = alloca i32, align 454  call void @llvm.dbg.declare(metadata ptr %i2.i, metadata !21, metadata !DIExpression()), !dbg !2355  %a = alloca i32, align 456  call void @llvm.dbg.declare(metadata ptr %a, metadata !24, metadata !DIExpression()), !dbg !2557  %call.i = call i32 @getchar(), !dbg !2658  %cmp.i = icmp eq i32 %call.i, 97, !dbg !2659  br i1 %cmp.i, label %if.then.i, label %if.else.i, !dbg !2760 61if.then.i:                                        ; preds = %entry62  %call1.i = call i32 @getchar(), !dbg !1963  store i32 %call1.i, ptr %i.i, align 4, !dbg !1964  %0 = load i32, ptr %i.i, align 4, !dbg !2865  store i32 %0, ptr %retval.i, align 4, !dbg !2866  br label %_Z7inlinedIiET_v.exit, !dbg !2867 68if.else.i:                                        ; preds = %entry69  store i32 97, ptr %i2.i, align 4, !dbg !2370  %1 = load i32, ptr %i2.i, align 4, !dbg !2971  store i32 %1, ptr %retval.i, align 4, !dbg !2972  br label %_Z7inlinedIiET_v.exit, !dbg !2973 74_Z7inlinedIiET_v.exit:                            ; preds = %if.then.i, %if.else.i75  %2 = load i32, ptr %retval.i, align 4, !dbg !3076  store i32 %2, ptr %a, align 4, !dbg !2577  %3 = load i32, ptr %a, align 4, !dbg !3178  %add = add nsw i32 %3, 1, !dbg !3179  ret i32 %add, !dbg !3180}81 82; Function Attrs: nounwind readnone speculatable83declare void @llvm.dbg.declare(metadata, metadata, metadata) #184 85; Function Attrs: noinline optnone ssp uwtable86define i32 @_Z1bv() #0 !dbg !32 {87entry:88  %retval.i = alloca i32, align 489  %i.i = alloca i32, align 490  call void @llvm.dbg.declare(metadata ptr %i.i, metadata !12, metadata !DIExpression()), !dbg !3391  %i2.i = alloca i32, align 492  call void @llvm.dbg.declare(metadata ptr %i2.i, metadata !21, metadata !DIExpression()), !dbg !3593  %b = alloca i32, align 494  call void @llvm.dbg.declare(metadata ptr %b, metadata !36, metadata !DIExpression()), !dbg !3795  %call.i = call i32 @getchar(), !dbg !3896  %cmp.i = icmp eq i32 %call.i, 97, !dbg !3897  br i1 %cmp.i, label %if.then.i, label %if.else.i, !dbg !3998 99if.then.i:                                        ; preds = %entry100  %call1.i = call i32 @getchar(), !dbg !33101  store i32 %call1.i, ptr %i.i, align 4, !dbg !33102  %0 = load i32, ptr %i.i, align 4, !dbg !40103  store i32 %0, ptr %retval.i, align 4, !dbg !40104  br label %_Z7inlinedIiET_v.exit, !dbg !40105 106if.else.i:                                        ; preds = %entry107  store i32 97, ptr %i2.i, align 4, !dbg !35108  %1 = load i32, ptr %i2.i, align 4, !dbg !41109  store i32 %1, ptr %retval.i, align 4, !dbg !41110  br label %_Z7inlinedIiET_v.exit, !dbg !41111 112_Z7inlinedIiET_v.exit:                            ; preds = %if.then.i, %if.else.i113  %2 = load i32, ptr %retval.i, align 4, !dbg !42114  store i32 %2, ptr %b, align 4, !dbg !37115  %3 = load i32, ptr %b, align 4, !dbg !43116  %add = add nsw i32 %3, 1, !dbg !43117  ret i32 %add, !dbg !43118}119 120; Function Attrs: noinline norecurse optnone ssp uwtable121define i32 @main() #2 !dbg !44 {122entry:123  %retval = alloca i32, align 4124  store i32 0, ptr %retval, align 4125  %call = call i32 @_Z1av(), !dbg !45126  %call1 = call i32 @_Z1bv(), !dbg !45127  %add = add nsw i32 %call, %call1, !dbg !45128  ret i32 %add, !dbg !45129}130 131declare i32 @getchar()132 133attributes #0 = { noinline optnone ssp uwtable }134attributes #1 = { nounwind readnone speculatable }135attributes #2 = { noinline norecurse optnone ssp uwtable }136 137!llvm.dbg.cu = !{!0}138!llvm.module.flags = !{!3, !4, !5, !6}139!llvm.ident = !{!7}140 141!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 8.0.0 (trunk 340541) (llvm/trunk 340540)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)142!1 = !DIFile(filename: "a.cpp", directory: "/tmp")143!2 = !{}144!3 = !{i32 2, !"Dwarf Version", i32 4}145!4 = !{i32 2, !"Debug Info Version", i32 3}146!5 = !{i32 1, !"wchar_size", i32 4}147!6 = !{i32 7, !"PIC Level", i32 2}148!7 = !{!"clang version 8.0.0 (trunk 340541) (llvm/trunk 340540)"}149!8 = distinct !DISubprogram(name: "a", linkageName: "_Z1av", scope: !1, file: !1, line: 3, type: !9, isLocal: false, isDefinition: true, scopeLine: 3, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)150!9 = !DISubroutineType(types: !10)151!10 = !{!11}152!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)153!12 = !DILocalVariable(name: "i", scope: !13, file: !14, line: 4, type: !11)154!13 = distinct !DILexicalBlock(scope: !15, file: !14, line: 3)155!14 = !DIFile(filename: "./header.h", directory: "/tmp")156!15 = distinct !DILexicalBlock(scope: !16, file: !14, line: 3)157!16 = distinct !DISubprogram(name: "inlined<int>", linkageName: "_Z7inlinedIiET_v", scope: !14, file: !14, line: 2, type: !9, isLocal: false, isDefinition: true, scopeLine: 2, flags: DIFlagPrototyped, isOptimized: false, unit: !0, templateParams: !17, retainedNodes: !2)158!17 = !{!18}159!18 = !DITemplateTypeParameter(name: "T", type: !11)160!19 = !DILocation(line: 4, scope: !13, inlinedAt: !20)161!20 = distinct !DILocation(line: 4, scope: !8)162!21 = !DILocalVariable(name: "i", scope: !22, file: !14, line: 7, type: !11)163!22 = distinct !DILexicalBlock(scope: !15, file: !14, line: 6)164!23 = !DILocation(line: 7, scope: !22, inlinedAt: !20)165!24 = !DILocalVariable(name: "a", scope: !8, file: !1, line: 4, type: !11)166!25 = !DILocation(line: 4, scope: !8)167!26 = !DILocation(line: 3, scope: !15, inlinedAt: !20)168!27 = !DILocation(line: 3, scope: !16, inlinedAt: !20)169!28 = !DILocation(line: 5, scope: !13, inlinedAt: !20)170!29 = !DILocation(line: 8, scope: !22, inlinedAt: !20)171!30 = !DILocation(line: 10, scope: !16, inlinedAt: !20)172!31 = !DILocation(line: 5, scope: !8)173!32 = distinct !DISubprogram(name: "b", linkageName: "_Z1bv", scope: !1, file: !1, line: 8, type: !9, isLocal: false, isDefinition: true, scopeLine: 8, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)174!33 = !DILocation(line: 4, scope: !13, inlinedAt: !34)175!34 = distinct !DILocation(line: 9, scope: !32)176!35 = !DILocation(line: 7, scope: !22, inlinedAt: !34)177!36 = !DILocalVariable(name: "b", scope: !32, file: !1, line: 9, type: !11)178!37 = !DILocation(line: 9, scope: !32)179!38 = !DILocation(line: 3, scope: !15, inlinedAt: !34)180!39 = !DILocation(line: 3, scope: !16, inlinedAt: !34)181!40 = !DILocation(line: 5, scope: !13, inlinedAt: !34)182!41 = !DILocation(line: 8, scope: !22, inlinedAt: !34)183!42 = !DILocation(line: 10, scope: !16, inlinedAt: !34)184!43 = !DILocation(line: 10, scope: !32)185!44 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 12, type: !9, isLocal: false, isDefinition: true, scopeLine: 12, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2)186!45 = !DILocation(line: 13, scope: !44)187