; 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 ; RUN: FileCheck %s --input-file %t ; CHECK: main:947937:0 ; CHECK-NEXT: 2: 545 ; CHECK-NEXT: 3: 545 ; CHECK-NEXT: 5: 545 ; CHECK-NEXT: 7: 0 ; CHECK-NEXT: 65496: 545 ; CHECK-NEXT: 3.7: _Z3fooi:915794 ; CHECK-NEXT: 1: 545 ; CHECK-NEXT: 5: 545 ; CHECK-NEXT: 6: 272 ; CHECK-NEXT: 10: 273 ; CHECK-NEXT: 11: 180 ; CHECK-NEXT: 12: 6965 ; CHECK-NEXT: 13: 6965 ; CHECK-NEXT: 14: 6965 ; CHECK-NEXT: 15: 6965 ; CHECK-NEXT: 20: 182 ; CHECK-NEXT: 21: 6958 ; CHECK-NEXT: 22: 6958 ; CHECK-NEXT: 23: 6958 ; CHECK-NEXT: 24: 6958 ; CHECK-NEXT: 29: 272 ; CHECK-NEXT: 65529: 182 ; CHECK-NEXT: 4.8: _Z3fooi:16338 ; CHECK-NEXT: 1: 272 ; CHECK-NEXT: 6: 545 ; binary is built with the source below using the following command line: ; clang -O3 -g -fpseudo-probe-for-profiling test.cpp ; ;#include ; ;volatile int state = 9000; ; ;int foo(int x) { ; if (x == 0) { ; return 7; ; } ; ; if ((x & 1) == 0) { ; state--; ; return 9; ; } ; ; if (state > 5000) { ; while (state > 5000) { ; for (int i = 50; i >= 0; i--) { ; state *= 6; ; state /= 7; ; state -= 1; ; } ; } ; } ; else { ; while (state < 5000) { ; for (int i = 50; i >= 0; i--) { ; state *= 6; ; state /= 5; ; state += 1; ; } ; } ; } ; ; return state; ;} ; ;volatile int cnt = 10000000;//10000000; ;int main() { ; int r = 0; ; for (int i = 0; i < cnt; i++) { ; r += foo(i); ; r -= foo(i & (~1)); ; r += foo(0); ; } ; return r; ;}