; REQUIRES: asserts
; Test default using size of profile as a proxy
; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/cs-preinline-cost.perfscript --binary=%S/Inputs/cs-preinline-cost.perfbin --csspgo-preinliner --debug-only=cs-preinliner --use-context-cost-for-preinliner=0 --output=/dev/null 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT

; Test use-context-cost-for-preinliner using inlinee's byte size as context-sensitive inline cost
; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/cs-preinline-cost.perfscript --binary=%S/Inputs/cs-preinline-cost.perfbin --csspgo-preinliner --debug-only=cs-preinliner --use-context-cost-for-preinliner --output=/dev/null 2>&1 | FileCheck %s --check-prefix=CHECK-CSCOST

CHECK-DEFAULT:      Process main for context-sensitive pre-inlining (pre-inline size: 9, size limit: 108)
CHECK-DEFAULT-NEXT:   Inlined context profile for: main:9 @ _Z3fooi (callee size: 2, call count:545)
CHECK-DEFAULT-NEXT:   Inlined context profile for: main:7 @ _Z3fooi (callee size: 14, call count:545)
CHECK-DEFAULT-NEXT:   Inlined context profile for: main:8 @ _Z3fooi (callee size: 4, call count:544)

CHECK-CSCOST:      Process main for context-sensitive pre-inlining (pre-inline size: 69, size limit: 828)
; This inlinee is fully optimized away, make sure we have the correct zero size for that context even if the size is
; not available through symbolization.
CHECK-CSCOST-NEXT:   Inlined context profile for: main:9 @ _Z3fooi (callee size: 0, call count:545)
CHECK-CSCOST-NEXT:   Inlined context profile for: main:7 @ _Z3fooi (callee size: 279, call count:545)
CHECK-CSCOST-NEXT:   Inlined context profile for: main:8 @ _Z3fooi (callee size: 44, call count:544)

; binary is built with the source below using the following command line:
;   clang -O3 -g -fpseudo-probe-for-profiling -fexperimental-new-pass-manager 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;
;}
