; 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 <stdio.h>
;
;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;
;}