diff --git a/clang/test/CodeGen/pgo-sample-thinlto-summary.c b/clang/test/CodeGen/pgo-sample-thinlto-summary.c --- a/clang/test/CodeGen/pgo-sample-thinlto-summary.c +++ b/clang/test/CodeGen/pgo-sample-thinlto-summary.c @@ -1,9 +1,7 @@ -// RUN: %clang_cc1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -o - 2>&1 | FileCheck %s -check-prefix=SAMPLEPGO -// RUN: %clang_cc1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -flto=thin -o - 2>&1 | FileCheck %s -check-prefix=THINLTO -// RUN: %clang_cc1 -O2 -fexperimental-new-pass-manager -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -o - 2>&1 | FileCheck %s -check-prefix=SAMPLEPGO -// RUN: %clang_cc1 -O2 -fexperimental-new-pass-manager -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -flto=thin -o - 2>&1 | FileCheck %s -check-prefix=THINLTO -// Checks if hot call is inlined by normal compile, but not inlined by -// thinlto compile. +// RUN: %clang_cc1 -mllvm -opt-bisect-limit=-1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -o - 2>&1 | FileCheck %s -check-prefix=SAMPLEPGO +// RUN: %clang_cc1 -mllvm -opt-bisect-limit=-1 -O2 -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -flto=thin -o - 2>&1 | FileCheck %s -check-prefix=THINLTO +// RUN: %clang_cc1 -mllvm -opt-bisect-limit=-1 -O2 -fexperimental-new-pass-manager -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -o - 2>&1 | FileCheck %s -check-prefix=SAMPLEPGO +// RUN: %clang_cc1 -mllvm -opt-bisect-limit=-1 -O2 -fexperimental-new-pass-manager -fprofile-sample-use=%S/Inputs/pgo-sample-thinlto-summary.prof %s -emit-llvm -flto=thin -o - 2>&1 | FileCheck %s -check-prefix=THINLTO int baz(int); int g; @@ -13,6 +11,16 @@ g += baz(i); } +// Checks that loop unroll and icp are invoked by normal compile, but not thinlto compile. +// SAMPLEPGO-LABEL: running pass ({{[0-9]+}}) {{[a-zA-Z0-9]+}} on +// THINLTO-LABEL: running pass ({{[0-9]+}}) {{[a-zA-Z0-9]+}} on +// SAMPLEPGO: running pass ({{[0-9]+}}) PGOIndirectCallPromotion on [module] +// SAMPLEPGO: running pass ({{[0-9]+}}) LoopUnrollPass on bar +// THINLTO-NOT: running pass ({{[0-9]+}}) PGOIndirectCallPromotion on [module] +// THINLTO-NOT: running pass ({{[0-9]+}}) LoopUnrollPass on bar + +// Checks if hot call is inlined by normal compile, but not inlined by +// thinlto compile. // SAMPLEPGO-LABEL: define {{(dso_local )?}}void @bar // THINLTO-LABEL: define {{(dso_local )?}}void @bar // SAMPLEPGO-NOT: call{{.*}}foo @@ -20,27 +28,4 @@ void bar(int n) { for (int i = 0; i < n; i++) foo(i); -} - -// Checks if loop unroll is invoked by normal compile, but not thinlto compile. -// SAMPLEPGO-LABEL: define {{(dso_local )?}}void @unroll -// THINLTO-LABEL: define {{(dso_local )?}}void @unroll -// SAMPLEPGO: call{{.*}}baz -// SAMPLEPGO: call{{.*}}baz -// THINLTO: call{{.*}}baz -// THINLTO-NOT: call{{.*}}baz -void unroll() { - for (int i = 0; i < 2; i++) - baz(i); -} - -// Checks that icp is not invoked for ThinLTO, but invoked for normal samplepgo. -// SAMPLEPGO-LABEL: define {{(dso_local )?}}void @icp -// THINLTO-LABEL: define {{(dso_local )?}}void @icp -// SAMPLEPGO: if.true.direct_targ -// FIXME: the following condition needs to be reversed once -// LTOPreLinkDefaultPipeline is customized. -// THINLTO-NOT: if.true.direct_targ -void icp(void (*p)()) { - p(); -} +} \ No newline at end of file