mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-19 19:45:40 -04:00

- CodeGen/flatten.c will fail under new PM becausec the new PM AlwaysInliner seems to intentionally inline functions but not call sites marked with alwaysinline (D23299) - Tests that check remarks happen to check them for the inliner which is not turned on at O0. These tests just check that remarks work, but we can make separate tests for the new PM with -O1 so we can turn on the inliner and check the remarks with minimal changes. Differential Revision: https://reviews.llvm.org/D62225 llvm-svn: 363846
86 lines
4.3 KiB
C
86 lines
4.3 KiB
C
// This test is similar to Frontend/optimization-remark-with-hotness.c but
|
|
// testing the output under the new pass manager. The inliner is not added to
|
|
// the default new PM pipeline at O0, so we compile with optimizations here. As
|
|
// a result, some of the remarks will be different since we turn on inlining,
|
|
// but the test is meant to show that remarks get dumped. The remarks are also
|
|
// slightly different in text.
|
|
|
|
// Generate instrumentation and sampling profile data.
|
|
// RUN: llvm-profdata merge \
|
|
// RUN: %S/Inputs/optimization-remark-with-hotness.proftext \
|
|
// RUN: -o %t.profdata
|
|
// RUN: llvm-profdata merge -sample \
|
|
// RUN: %S/Inputs/optimization-remark-with-hotness-sample.proftext \
|
|
// RUN: -o %t-sample.profdata
|
|
//
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \
|
|
// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \
|
|
// RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \
|
|
// RUN: -fexperimental-new-pass-manager -O1 \
|
|
// RUN: -Rpass-analysis=inline -Rpass-missed=inline \
|
|
// RUN: -fdiagnostics-show-hotness -verify
|
|
// The clang version of the previous test.
|
|
// RUN: %clang -target x86_64-apple-macosx10.9 %s -c -emit-llvm -o /dev/null \
|
|
// RUN: -fprofile-instr-use=%t.profdata -Rpass=inline \
|
|
// RUN: -fexperimental-new-pass-manager -O1 \
|
|
// RUN: -Rpass-analysis=inline -Rpass-missed=inline \
|
|
// RUN: -fdiagnostics-show-hotness -Xclang -verify
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \
|
|
// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \
|
|
// RUN: -fprofile-sample-use=%t-sample.profdata -Rpass=inline \
|
|
// RUN: -fexperimental-new-pass-manager -O1 \
|
|
// RUN: -Rpass-analysis=inline -Rpass-missed=inline \
|
|
// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 \
|
|
// RUN: -verify
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \
|
|
// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \
|
|
// RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \
|
|
// RUN: -fexperimental-new-pass-manager -O1 \
|
|
// RUN: -Rpass-analysis=inline -Rpass-missed=inline \
|
|
// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 -verify
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \
|
|
// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \
|
|
// RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \
|
|
// RUN: -fexperimental-new-pass-manager -O1 \
|
|
// RUN: -Rpass-analysis=inline 2>&1 | FileCheck -check-prefix=HOTNESS_OFF %s
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \
|
|
// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \
|
|
// RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \
|
|
// RUN: -fexperimental-new-pass-manager -O1 \
|
|
// RUN: -Rpass-analysis=inline -Rno-pass-with-hotness 2>&1 | FileCheck \
|
|
// RUN: -check-prefix=HOTNESS_OFF %s
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \
|
|
// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \
|
|
// RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \
|
|
// RUN: -Rpass-analysis=inline -fdiagnostics-show-hotness \
|
|
// RUN: -fdiagnostics-hotness-threshold=100 2>&1 \
|
|
// RUN: | FileCheck -allow-empty -check-prefix=THRESHOLD %s
|
|
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \
|
|
// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \
|
|
// RUN: -Rpass=inline -Rpass-analysis=inline \
|
|
// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 2>&1 \
|
|
// RUN: | FileCheck -check-prefix=NO_PGO %s
|
|
|
|
int foo(int x, int y) __attribute__((always_inline));
|
|
int foo(int x, int y) { return x + y; }
|
|
|
|
int sum = 0;
|
|
|
|
void bar(int x) {
|
|
// HOTNESS_OFF: foo inlined into bar
|
|
// HOTNESS_OFF-NOT: hotness:
|
|
// THRESHOLD-NOT: inlined
|
|
// THRESHOLD-NOT: hotness
|
|
// NO_PGO: '-fdiagnostics-show-hotness' requires profile-guided optimization information
|
|
// NO_PGO: '-fdiagnostics-hotness-threshold=' requires profile-guided optimization information
|
|
// expected-remark@+1 {{foo inlined into bar with (cost=always): always inline attribute (hotness:}}
|
|
sum += foo(x, x - 2);
|
|
}
|
|
|
|
int main(int argc, const char *argv[]) {
|
|
for (int i = 0; i < 30; i++)
|
|
// expected-remark@+1 {{bar inlined into main with}}
|
|
bar(argc);
|
|
return sum;
|
|
}
|