87 lines · c
1// This test is similar to Frontend/optimization-remark-with-hotness.c but2// testing the output under the new pass manager. The inliner is not added to3// the default new PM pipeline at O0, so we compile with optimizations here. As4// a result, some of the remarks will be different since we turn on inlining,5// but the test is meant to show that remarks get dumped. The remarks are also6// slightly different in text.7 8// Generate instrumentation and sampling profile data.9// RUN: llvm-profdata merge \10// RUN: %S/Inputs/optimization-remark-with-hotness.proftext \11// RUN: -o %t.profdata12// RUN: llvm-profdata merge -sample \13// RUN: %S/Inputs/optimization-remark-with-hotness-sample.proftext \14// RUN: -o %t-sample.profdata15//16// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \17// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \18// RUN: -fprofile-instrument-use=clang -fprofile-instrument-use-path=%t.profdata \19// RUN: -Rpass=inline \20// RUN: -O1 \21// RUN: -Rpass-analysis=inline -Rpass-missed=inline \22// RUN: -fdiagnostics-show-hotness -verify23// The clang version of the previous test.24// RUN: %clang -target x86_64-apple-macosx10.9 %s -c -emit-llvm -o /dev/null \25// RUN: -fprofile-instr-use=%t.profdata -Rpass=inline \26// RUN: -O1 \27// RUN: -Rpass-analysis=inline -Rpass-missed=inline \28// RUN: -fdiagnostics-show-hotness -Xclang -verify29// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \30// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \31// RUN: -fprofile-sample-use=%t-sample.profdata -Rpass=inline \32// RUN: -O1 \33// RUN: -Rpass-analysis=inline -Rpass-missed=inline \34// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 \35// RUN: -verify36// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \37// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \38// RUN: -fprofile-instrument-use=clang -fprofile-instrument-use-path=%t.profdata -Rpass=inline \39// RUN: -O1 \40// RUN: -Rpass-analysis=inline -Rpass-missed=inline \41// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 -verify42// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \43// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \44// RUN: -fprofile-instrument-use=clang -fprofile-instrument-use-path=%t.profdata -Rpass=inline \45// RUN: -O1 \46// RUN: -Rpass-analysis=inline 2>&1 | FileCheck -check-prefix=HOTNESS_OFF %s47// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \48// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \49// RUN: -fprofile-instrument-use=clang -fprofile-instrument-use-path=%t.profdata -Rpass=inline \50// RUN: -O1 \51// RUN: -Rpass-analysis=inline -Rno-pass-with-hotness 2>&1 | FileCheck \52// RUN: -check-prefix=HOTNESS_OFF %s53// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \54// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \55// RUN: -fprofile-instrument-use=clang -fprofile-instrument-use-path=%t.profdata -Rpass=inline \56// RUN: -Rpass-analysis=inline -fdiagnostics-show-hotness \57// RUN: -fdiagnostics-hotness-threshold=100 2>&1 \58// RUN: | FileCheck -allow-empty -check-prefix=THRESHOLD %s59// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \60// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \61// RUN: -Rpass=inline -Rpass-analysis=inline \62// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 2>&1 \63// RUN: | FileCheck -check-prefix=NO_PGO %s64 65int foo(int x, int y) __attribute__((always_inline));66int foo(int x, int y) { return x + y; }67 68int sum = 0;69 70void bar(int x) {71 // HOTNESS_OFF: 'foo' inlined into 'bar'72 // HOTNESS_OFF-NOT: hotness:73 // THRESHOLD-NOT: inlined74 // THRESHOLD-NOT: hotness75 // NO_PGO: '-fdiagnostics-show-hotness' requires profile-guided optimization information76 // NO_PGO: '-fdiagnostics-hotness-threshold=' requires profile-guided optimization information77 // expected-remark@+1 {{'foo' inlined into 'bar' with (cost=always): always inline attribute at callsite bar:8:10; (hotness:}}78 sum += foo(x, x - 2);79}80 81int main(int argc, const char *argv[]) {82 for (int i = 0; i < 30; i++)83 // expected-remark@+1 {{'bar' inlined into 'main' with}}84 bar(argc);85 return sum;86}87