1; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/inline-noprobe.perfscript --binary=%S/Inputs/inline-noprobe.perfbin --output=%t --skip-symbolization 2; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-RAW-PROFILE 3; RUN: llvm-profgen --format=text --use-dwarf-correlation --perfscript=%S/Inputs/inline-noprobe.perfscript --binary=%S/Inputs/inline-noprobe.perfbin --output=%t --skip-symbolization 4; RUN: FileCheck %s --input-file %t --check-prefix=CHECK-RAW-PROFILE 5; RUN: llvm-profgen --format=text --unsymbolized-profile=%t --binary=%S/Inputs/inline-noprobe.perfbin --output=%t1 6; RUN: FileCheck %s --input-file %t1 --check-prefix=CHECK 7; RUN: llvm-profgen --format=text --unsymbolized-profile=%t --binary=%S/Inputs/inline-noprobe.perfbin --output=%t1 --update-total-samples 8; RUN: FileCheck %s --input-file %t1 --check-prefix=CHECK-UPDATE-TOTAL-SAMPLE 9; RUN: llvm-profgen --format=text --use-dwarf-correlation --perfscript=%S/Inputs/inline-noprobe.perfscript --binary=%S/Inputs/inline-noprobe.perfbin --output=%t 10; RUN: FileCheck %s --input-file %t --check-prefix=CHECK 11; RUN: echo -e "0\n0" > %t 12; RUN: llvm-profgen --format=text --unsymbolized-profile=%t --binary=%S/Inputs/inline-noprobe.perfbin --output=%t1 --fill-zero-for-all-funcs 13; RUN: FileCheck %s --input-file %t1 --check-prefix=CHECK-ALL-ZERO 14; RUN: llvm-profgen --format=text --unsymbolized-profile=%S/Inputs/out-of-bounds.raw.prof --binary=%S/Inputs/inline-noprobe.perfbin --output=%t1 15; RUN: FileCheck %s --input-file %t1 --check-prefix=CHECK-OB 16 17CHECK: main:2609:0 18CHECK: 0: 0 19CHECK: 2: 0 20CHECK: 1: foo:2609 21CHECK: 2.1: 42 22CHECK: 3: 62 23CHECK: 3.2: 21 24CHECK: 4: 0 25CHECK: 65526: 62 26CHECK: 3.1: bar:546 27CHECK: 1: 42 28CHECK: 65533: 42 29CHECK: 3.2: bar:189 30CHECK: 1: 21 31 32CHECK-UPDATE-TOTAL-SAMPLE: main:292:0 33CHECK-UPDATE-TOTAL-SAMPLE: 0: 0 34CHECK-UPDATE-TOTAL-SAMPLE: 2: 0 35CHECK-UPDATE-TOTAL-SAMPLE: 1: foo:292 36CHECK-UPDATE-TOTAL-SAMPLE: 2.1: 42 37CHECK-UPDATE-TOTAL-SAMPLE: 3: 62 38CHECK-UPDATE-TOTAL-SAMPLE: 3.2: 21 39CHECK-UPDATE-TOTAL-SAMPLE: 4: 0 40CHECK-UPDATE-TOTAL-SAMPLE: 65526: 62 41CHECK-UPDATE-TOTAL-SAMPLE: 3.1: bar:84 42CHECK-UPDATE-TOTAL-SAMPLE: 1: 42 43CHECK-UPDATE-TOTAL-SAMPLE: 65533: 42 44CHECK-UPDATE-TOTAL-SAMPLE: 3.2: bar:21 45CHECK-UPDATE-TOTAL-SAMPLE: 1: 21 46 47CHECK-ALL-ZERO: bar:0:0 48CHECK-ALL-ZERO: 1: 0 49CHECK-ALL-ZERO: 5: 0 50CHECK-ALL-ZERO: foo:0:0 51CHECK-ALL-ZERO: 0: 0 52CHECK-ALL-ZERO: 2.1: 0 53CHECK-ALL-ZERO: 3: 0 54CHECK-ALL-ZERO: 3.2: 0 55CHECK-ALL-ZERO: 4: 0 56CHECK-ALL-ZERO: 3.1: bar:0 57CHECK-ALL-ZERO: 1: 0 58CHECK-ALL-ZERO: 3.2: bar:0 59CHECK-ALL-ZERO: 1: 0 60CHECK-ALL-ZERO: 7: 0 61CHECK-ALL-ZERO: main:0:0 62CHECK-ALL-ZERO: 0: 0 63CHECK-ALL-ZERO: 2: 0 64CHECK-ALL-ZERO: 1: foo:0 65CHECK-ALL-ZERO: 2.1: 0 66CHECK-ALL-ZERO: 3: 0 67CHECK-ALL-ZERO: 3.2: 0 68CHECK-ALL-ZERO: 4: 0 69CHECK-ALL-ZERO: 3.1: bar:0 70CHECK-ALL-ZERO: 1: 0 71CHECK-ALL-ZERO: 3.2: bar:0 72CHECK-ALL-ZERO: 1: 0 73 74CHECK-RAW-PROFILE: 3 75CHECK-RAW-PROFILE-NEXT: 650-691:21 76CHECK-RAW-PROFILE-NEXT: 669-677:20 77CHECK-RAW-PROFILE-NEXT: 669-691:21 78CHECK-RAW-PROFILE-NEXT: 2 79CHECK-RAW-PROFILE-NEXT: 677->650:21 80CHECK-RAW-PROFILE-NEXT: 691->669:43 81 82;CHECK-OB: foo:114:0 83;CHECK-OB: 0: 1 84;CHECK-OB: 2.1: 1 85;CHECK-OB: 3: 1 86;CHECK-OB: 3.2: 1 87;CHECK-OB: 4: 1 88;CHECK-OB: 3.1: bar:13 89;CHECK-OB: 1: 1 90;CHECK-OB: 65533: 1 91;CHECK-OB: 3.2: bar:24 92;CHECK-OB: 1: 1 93;CHECK-OB: 7: 1 94;CHECK-OB: main:100:0 95;CHECK-OB: 0: 1 96;CHECK-OB: 2: 1 97;CHECK-OB: 1: foo:80 98;CHECK-OB: 2.1: 1 99;CHECK-OB: 3: 1 100;CHECK-OB: 3.2: 1 101;CHECK-OB: 4: 1 102;CHECK-OB: 65526: 1 103;CHECK-OB: 3.1: bar:13 104;CHECK-OB: 1: 1 105;CHECK-OB: 65533: 1 106;CHECK-OB: 3.2: bar:9 107;CHECK-OB: 1: 1 108;CHECK-OB: bar:14:0 109;CHECK-OB: 1: 1 110;CHECK-OB: 5: 1 111 112; original code: 113; clang -O3 -g -fdebug-info-for-profiling test.c -o a.out 114#include <stdio.h> 115 116int bar(int x, int y) { 117 if (x % 2) { 118 return x - y; 119 } 120 return x + y; 121} 122 123void foo() { 124 int s, i = 0; 125 while (i++ < 4000 * 4000) 126 if (i % 3) s = bar(i, s); else s += bar(s, i); 127 printf("sum is %d\n", s); 128} 129 130int main() { 131 foo(); 132 return 0; 133} 134