1; RUN: llvm-profgen --format=text --use-dwarf-correlation --ignore-stack-samples --perfscript=%S/Inputs/cs-preinline-cost.perfscript --binary=%S/Inputs/cs-preinline-cost.perfbin --output %t 2; RUN: FileCheck %s --input-file %t 3 4; CHECK: main:947937:0 5; CHECK-NEXT: 2: 545 6; CHECK-NEXT: 3: 545 7; CHECK-NEXT: 5: 545 8; CHECK-NEXT: 7: 0 9; CHECK-NEXT: 65496: 545 10; CHECK-NEXT: 3.7: _Z3fooi:915794 11; CHECK-NEXT: 1: 545 12; CHECK-NEXT: 5: 545 13; CHECK-NEXT: 6: 272 14; CHECK-NEXT: 10: 273 15; CHECK-NEXT: 11: 180 16; CHECK-NEXT: 12: 6965 17; CHECK-NEXT: 13: 6965 18; CHECK-NEXT: 14: 6965 19; CHECK-NEXT: 15: 6965 20; CHECK-NEXT: 20: 182 21; CHECK-NEXT: 21: 6958 22; CHECK-NEXT: 22: 6958 23; CHECK-NEXT: 23: 6958 24; CHECK-NEXT: 24: 6958 25; CHECK-NEXT: 29: 272 26; CHECK-NEXT: 65529: 182 27; CHECK-NEXT: 4.8: _Z3fooi:16338 28; CHECK-NEXT: 1: 272 29; CHECK-NEXT: 6: 545 30 31 32 33 34; binary is built with the source below using the following command line: 35; clang -O3 -g -fpseudo-probe-for-profiling test.cpp 36; 37;#include <stdio.h> 38; 39;volatile int state = 9000; 40; 41;int foo(int x) { 42; if (x == 0) { 43; return 7; 44; } 45; 46; if ((x & 1) == 0) { 47; state--; 48; return 9; 49; } 50; 51; if (state > 5000) { 52; while (state > 5000) { 53; for (int i = 50; i >= 0; i--) { 54; state *= 6; 55; state /= 7; 56; state -= 1; 57; } 58; } 59; } 60; else { 61; while (state < 5000) { 62; for (int i = 50; i >= 0; i--) { 63; state *= 6; 64; state /= 5; 65; state += 1; 66; } 67; } 68; } 69; 70; return state; 71;} 72; 73;volatile int cnt = 10000000;//10000000; 74;int main() { 75; int r = 0; 76; for (int i = 0; i < cnt; i++) { 77; r += foo(i); 78; r -= foo(i & (~1)); 79; r += foo(0); 80; } 81; return r; 82;} 83