summaryrefslogtreecommitdiff
path: root/test/profile
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2017-07-12 23:28:45 +0000
committerXinliang David Li <davidxl@google.com>2017-07-12 23:28:45 +0000
commit1832be2ba37b2ca197edf7239eead2f5b43ed838 (patch)
tree40fb93c1be246de441e6042ae8959906dd339932 /test/profile
parent835fb5484f8b11c84eeb366cbc2cd4f60eff1a47 (diff)
[PGO] Add a test for 2-deep loop nest
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@307864 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/profile')
-rw-r--r--test/profile/Linux/counter_promo_nest.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/profile/Linux/counter_promo_nest.c b/test/profile/Linux/counter_promo_nest.c
new file mode 100644
index 000000000..57e5c61d7
--- /dev/null
+++ b/test/profile/Linux/counter_promo_nest.c
@@ -0,0 +1,51 @@
+// RUN: rm -fr %t.promo.prof
+// RUN: rm -fr %t.nopromo.prof
+// RUN: %clang_pgogen=%t.promo.prof/ -o %t.promo.gen -O2 %s
+// RUN: %clang_pgogen=%t.promo.prof/ -o %t.promo.gen.ll -emit-llvm -S -O2 %s
+// RUN: cat %t.promo.gen.ll | FileCheck --check-prefix=PROMO %s
+// RUN: %run %t.promo.gen
+// RUN: llvm-profdata merge -o %t.promo.profdata %t.promo.prof/
+// RUN: llvm-profdata show --counts --all-functions %t.promo.profdata > %t.promo.dump
+// RUN: %clang_pgogen=%t.nopromo.prof/ -mllvm -do-counter-promotion=false -o %t.nopromo.gen -O2 %s
+// RUN: %run %t.nopromo.gen
+// RUN: llvm-profdata merge -o %t.nopromo.profdata %t.nopromo.prof/
+// RUN: llvm-profdata show --counts --all-functions %t.nopromo.profdata > %t.nopromo.dump
+// RUN: diff %t.promo.profdata %t.nopromo.profdata
+int g;
+__attribute__((noinline)) void bar() {
+ g++;
+}
+
+extern int printf(const char*,...);
+
+int c = 10;
+
+int main()
+// PROMO-LABEL: @main
+// PROMO: load{{.*}}@__profc_main{{.*}}
+// PROMO-NEXT: add
+// PROMO-NEXT: store{{.*}}@__profc_main{{.*}}
+// PROMO-NEXT: load{{.*}}@__profc_main{{.*}}
+// PROMO-NEXT: add
+// PROMO-NEXT: store{{.*}}@__profc_main{{.*}}
+// PROMO-NEXT: load{{.*}}@__profc_main{{.*}}
+// PROMO-NEXT: add
+// PROMO-NEXT: store{{.*}}@__profc_main{{.*}}
+{
+ int i, j, k;
+
+ g = 0;
+ for (i = 0; i < c; i++)
+ for (j = 0; j < c; j++)
+ for (k = 0; k < c; k++)
+ bar();
+
+ for (i = 0; i < c; i++)
+ for (j = 0; j < 10*c;j++)
+ bar();
+
+ for (i = 0; i < 100*c; i++)
+ bar();
+
+ return 0;
+}