83 lines
1.8 KiB
Text
83 lines
1.8 KiB
Text
|
; 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;
|
||
|
;}
|