On 7/20/20 2:15 AM, Richard Biener wrote:
I think at least parts of tree-prof.exp exercises sample-based profiling
which might require more iterations. For example cold_partition_label.c
was changed by
commit f63ba78ce6d50bf627dd18018179eb03bf89716f
Author: Andi Kleen <a...@linux.intel.com>
Date: Thu Jul 14 02:14:56 2016 +0000
Some fixes for profile test cases for autofdo
This fixes some basic issues with the profile test cases with autofdo.
- Disable checking for value transformations that autofdo does not
support.
- Disable checking for fixed hit counts which autofdo does not support
- Enable dumping of afdo log file and check right log file.
- Increase run time of test cases to 1M iterations because autofdo needs
a few samples to make sense of a program. The test case don't run
noticeable slower with that.
There are still failures unfortunately, especially the indirect call
transformations do not trigger because autofdo thinks they are not hot.
This can be addressed later.
so the change to a larger number of iterations was intended. Maybe
we can arrange to pass -DFOR_AUTOFDO_TESTING for the
autofdo compiles and gate the larger number of iterations on that
(most targets do not support autofdo and to not run that mode)?
Something like the attached updated patch? Unfortunately I'm not set up
to test that this actually works on an autofdo target, maybe somebody
else could give it a try?
-Sandra
commit 2608a0ae0e81f039f354ec4c0c2fb0c3dbb8ea08
Author: Sandra Loosemore <san...@codesourcery.com>
Date: Mon Jul 20 16:02:53 2020 -0700
Scale down long-running tree-prof.exp tests for non-FDO testing.
2020-07-20 Sandra Loosemore <san...@codesourcery.com>
gcc/testsuite/
* lib/profopt.exp (auto-profopt-execute): Pass -DFOR_AUTOFDO_TESTING
on command line for both compiles.
* gcc.dg/tree-prof/cold_partition_label.c: Scale down for
non-FDO testing.
* gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: Likewise.
* gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: Likewise.
* gcc.dg/tree-prof/indir-call-prof-topn.c: Likewise.
* gcc.dg/tree-prof/section-attr-1.c: Likewise.
* gcc.dg/tree-prof/section-attr-2.c: Likewise.
* gcc.dg/tree-prof/section-attr-3.c: Likewise.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7e8dc55..0928855 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2020-07-20 Sandra Loosemore <san...@codesourcery.com>
+
+ * lib/profopt.exp (auto-profopt-execute): Pass -DFOR_AUTOFDO_TESTING
+ on command line for both compiles.
+ * gcc.dg/tree-prof/cold_partition_label.c: Scale down for
+ non-FDO testing.
+ * gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c: Likewise.
+ * gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c: Likewise.
+ * gcc.dg/tree-prof/indir-call-prof-topn.c: Likewise.
+ * gcc.dg/tree-prof/section-attr-1.c: Likewise.
+ * gcc.dg/tree-prof/section-attr-2.c: Likewise.
+ * gcc.dg/tree-prof/section-attr-3.c: Likewise.
+
2020-07-19 H.J. Lu <hjl.to...@gmail.com>
PR target/95973
diff --git a/gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c b/gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
index 450308d..511b610 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
@@ -3,6 +3,12 @@
/* { dg-require-effective-target freorder } */
/* { dg-options "-O2 -freorder-blocks-and-partition -save-temps -fdump-tree-optimized" } */
+#ifdef FOR_AUTOFDO_TESTING
+#define MAXITER 1000000
+#else
+#define MAXITER 10000
+#endif
+
#define SIZE 10000
const char *sarr[SIZE];
@@ -32,7 +38,7 @@ main (int argc, char *argv[])
int i;
buf_hot = "hello";
buf_cold = "world";
- for (i = 0; i < 1000000; i++)
+ for (i = 0; i < MAXITER; i++)
foo (argc);
return 0;
}
diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c
index a13b08c..b57d30f 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c
@@ -3,6 +3,12 @@
/* { dg-require-profiling "-fprofile-generate" } */
/* { dg-options "-O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate" } */
+#ifdef FOR_AUTOFDO_TESTING
+#define MAXITER 350000000
+#else
+#define MAXITER 3500000
+#endif
+
#include <stdio.h>
typedef int (*fptr) (int);
@@ -22,7 +28,7 @@ main()
x = one (3);
- for (i = 0; i < 350000000; i++)
+ for (i = 0; i < MAXITER; i++)
{
x = (*p) (3);
p = table[x];
diff --git a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c
index 9b996fc..6b5ae93 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-2.c
@@ -3,6 +3,12 @@
/* { dg-require-profiling "-fprofile-generate" } */
/* { dg-options "-O2 -flto -DDOJOB=1 -fdump-ipa-profile_estimate" } */
+#ifdef FOR_AUTOFDO_TESTING
+#define MAXITER 350000000
+#else
+#define MAXITER 3500000
+#endif
+
#include <stdio.h>
typedef int (*fptr) (int);
@@ -21,7 +27,7 @@ int foo ()
x = one (3);
- for (i = 0; i < 350000000; i++)
+ for (i = 0; i < MAXITER; i++)
{
x = (*p) (3);
p = table[x];
diff --git a/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c b/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c
index 063996c..9a1a0be 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c
@@ -1,6 +1,12 @@
/* { dg-require-profiling "-fprofile-generate" } */
/* { dg-options "-O2 -fdump-ipa-profile_estimate" } */
+#ifdef FOR_AUTOFDO_TESTING
+#define MAXITER 350000000
+#else
+#define MAXITER 3500000
+#endif
+
#include <stdio.h>
typedef int (*fptr) (int);
@@ -26,7 +32,7 @@ main()
one (3);
- for (i = 0; i < 350000000; i++)
+ for (i = 0; i < MAXITER; i++)
{
x = (*p) (3);
p = table[x];
diff --git a/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c b/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
index 89ecc1c..2087d0d 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
@@ -3,6 +3,12 @@
/* { dg-require-effective-target freorder } */
/* { dg-options "-O2 -fno-profile-reorder-functions -freorder-blocks-and-partition -save-temps" } */
+#ifdef FOR_AUTOFDO_TESTING
+#define MAXITER 1000000
+#else
+#define MAXITER 10000
+#endif
+
#define SIZE 10000
#define NOINLINE __attribute__((noinline)) __attribute__ ((noclone))
@@ -24,7 +30,7 @@ main (int argc, char *argv[])
int i;
buf_hot = "hello";
buf_cold = "world";
- for (i = 0; i < 1000000; i++)
+ for (i = 0; i < MAXITER; i++)
foo (argc);
return 0;
}
diff --git a/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c b/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
index b856457..b02526b 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
@@ -4,6 +4,12 @@
/* { dg-require-effective-target freorder } */
/* { dg-options "-O2 -fno-profile-reorder-functions -freorder-blocks-and-partition -save-temps" } */
+#ifdef FOR_AUTOFDO_TESTING
+#define MAXITER 1000000
+#else
+#define MAXITER 10000
+#endif
+
#define SIZE 10000
#define NOINLINE __attribute__((noinline)) __attribute__ ((noclone))
@@ -20,7 +26,7 @@ main (int argc, char *argv[])
int i;
buf_hot = "hello";
buf_cold = "world";
- for (i = 0; i < 1000000; i++)
+ for (i = 0; i < MAXITER; i++)
foo (argc);
return 0;
}
diff --git a/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c b/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
index 8d85cf3..da06407 100644
--- a/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
+++ b/gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
@@ -4,6 +4,12 @@
/* { dg-require-effective-target freorder } */
/* { dg-options "-O2 -fno-profile-reorder-functions -freorder-blocks-and-partition -save-temps" } */
+#ifdef FOR_AUTOFDO_TESTING
+#define MAXITER 1000000
+#else
+#define MAXITER 10000
+#endif
+
#define SIZE 10000
#define NOINLINE __attribute__((noinline)) __attribute__ ((noclone))
@@ -24,7 +30,7 @@ main (int argc, char *argv[])
int i;
buf_hot = "hello";
buf_cold = "world";
- for (i = 0; i < 1000000; i++)
+ for (i = 0; i < MAXITER; i++)
foo (argc);
return 0;
}
diff --git a/gcc/testsuite/lib/profopt.exp b/gcc/testsuite/lib/profopt.exp
index af1fd62..d686343 100644
--- a/gcc/testsuite/lib/profopt.exp
+++ b/gcc/testsuite/lib/profopt.exp
@@ -289,8 +289,8 @@ proc auto-profopt-execute { src } {
return
}
set profile_wrapper [profopt-perf-wrapper]
- set profile_option "-g"
- set feedback_option "-fauto-profile"
+ set profile_option "-g -DFOR_AUTOFDO_TESTING"
+ set feedback_option "-fauto-profile -DFOR_AUTOFDO_TESTING"
set run_autofdo 1
profopt-execute $src
unset profile_wrapper