mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-03 06:10:23 +00:00
e6d2c8dde6
- 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
21 lines
1019 B
C
21 lines
1019 B
C
// Verify that remarks for the inliner appear. The remarks under the new PM will
|
|
// be slightly different than those emitted by the legacy PM. The new PM inliner
|
|
// also doesnot appear to be added at O0, so we test at O1.
|
|
// RUN: %clang_cc1 %s -Rpass=inline -Rpass-analysis=inline -Rpass-missed=inline -O1 -fexperimental-new-pass-manager -emit-llvm-only -verify
|
|
// RUN: %clang_cc1 %s -Rpass=inline -Rpass-analysis=inline -Rpass-missed=inline -O1 -fexperimental-new-pass-manager -emit-llvm-only -debug-info-kind=line-tables-only -verify
|
|
|
|
int foo(int x, int y) __attribute__((always_inline));
|
|
int foo(int x, int y) { return x + y; }
|
|
|
|
float foz(int x, int y) __attribute__((noinline));
|
|
float foz(int x, int y) { return x * y; }
|
|
|
|
// The negative diagnostics are emitted twice because the inliner runs
|
|
// twice.
|
|
//
|
|
int bar(int j) {
|
|
// expected-remark@+2 {{foz not inlined into bar because it should never be inlined (cost=never)}}
|
|
// expected-remark@+1 {{foo inlined into bar}}
|
|
return foo(j, j - 2) * foz(j - 2, j);
|
|
}
|