aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-07-31 12:33:21 +0200
committerMartin Liska <marxin@gcc.gnu.org>2018-07-31 10:33:21 +0000
commit102fcf94e625a2016a65829c73a42bd6c2420376 (patch)
treeadbc04540f28f40a8827907f4f6b9b8e4883323a /gcc/testsuite
parent5dbc3940fcd15ff477eb556630734017dd2b0cff (diff)
downloadgcc-102fcf94e625a2016a65829c73a42bd6c2420376.zip
gcc-102fcf94e625a2016a65829c73a42bd6c2420376.tar.gz
gcc-102fcf94e625a2016a65829c73a42bd6c2420376.tar.bz2
Fix GCOV CFG related issues.
2018-07-31 Martin Liska <mliska@suse.cz> PR gcov-profile/83813 PR gcov-profile/84758 PR gcov-profile/85217 PR gcov-profile/85332 * profile.c (branch_prob): Do not record GOTO expressions for GIMPLE statements which locations are already streamed. 2018-07-31 Martin Liska <mliska@suse.cz> PR gcov-profile/83813 PR gcov-profile/84758 PR gcov-profile/85217 PR gcov-profile/85332 * gcc.misc-tests/gcov-pr83813.c: New test. * gcc.misc-tests/gcov-pr84758.c: New test. * gcc.misc-tests/gcov-pr85217.c: New test. * gcc.misc-tests/gcov-pr85332.c: New test. From-SVN: r263111
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog11
-rw-r--r--gcc/testsuite/gcc.misc-tests/gcov-pr83813.c23
-rw-r--r--gcc/testsuite/gcc.misc-tests/gcov-pr84758.c28
-rw-r--r--gcc/testsuite/gcc.misc-tests/gcov-pr85217.c20
-rw-r--r--gcc/testsuite/gcc.misc-tests/gcov-pr85332.c26
5 files changed, 108 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6b4e679..f726e24 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2018-07-31 Martin Liska <mliska@suse.cz>
+
+ PR gcov-profile/83813
+ PR gcov-profile/84758
+ PR gcov-profile/85217
+ PR gcov-profile/85332
+ * gcc.misc-tests/gcov-pr83813.c: New test.
+ * gcc.misc-tests/gcov-pr84758.c: New test.
+ * gcc.misc-tests/gcov-pr85217.c: New test.
+ * gcc.misc-tests/gcov-pr85332.c: New test.
+
2018-07-31 Ed Schonberg <schonberg@adacore.com>
* gnat.dg/prot5.adb, gnat.dg/prot5_pkg.adb,
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-pr83813.c b/gcc/testsuite/gcc.misc-tests/gcov-pr83813.c
new file mode 100644
index 0000000..ac935b9
--- /dev/null
+++ b/gcc/testsuite/gcc.misc-tests/gcov-pr83813.c
@@ -0,0 +1,23 @@
+/* { dg-options "-fprofile-arcs -ftest-coverage" } */
+/* { dg-do run { target native } } */
+
+union U
+{
+ int f0;
+ unsigned char f1;
+};
+
+int main()
+{
+ int i = 0;
+ union U u = {0}; /* count(1) */
+ for (u.f1 = 0; u.f1 != -2; ++u.f1) {
+ i ^= u.f1; /* count(1) */
+ if (i < 1) /* count(1) */
+ return 0; /* count(1) */
+ }
+
+ return 1;
+}
+
+/* { dg-final { run-gcov gcov-pr83813.c } } */
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-pr84758.c b/gcc/testsuite/gcc.misc-tests/gcov-pr84758.c
new file mode 100644
index 0000000..2ae6900
--- /dev/null
+++ b/gcc/testsuite/gcc.misc-tests/gcov-pr84758.c
@@ -0,0 +1,28 @@
+/* { dg-options "-fprofile-arcs -ftest-coverage" } */
+/* { dg-do run { target native } } */
+
+int x, y;
+
+static void
+foo (int a, int b)
+{
+ {
+ if (a == 1 || a == 2) /* count(1) */
+ {
+ x = 4; /* count(1) */
+ if (b == 3) /* count(1) */
+ x = 6; /* count(1) */
+ }
+ else
+ x = 15; /* count(#####) */
+ }
+}
+
+int
+main (void)
+{
+ foo (2, 3);
+ return 0;
+}
+
+/* { dg-final { run-gcov gcov-pr84758.c } } */
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-pr85217.c b/gcc/testsuite/gcc.misc-tests/gcov-pr85217.c
new file mode 100644
index 0000000..86a3c4b
--- /dev/null
+++ b/gcc/testsuite/gcc.misc-tests/gcov-pr85217.c
@@ -0,0 +1,20 @@
+/* { dg-options "-fprofile-arcs -ftest-coverage" } */
+/* { dg-do run { target native } } */
+
+int a=0;
+
+int main() {
+ for (;; a++) {
+ int c[1];
+ if (a) {
+ break;
+ a;
+ continue; /* count(1) */
+ }
+ continue; /* count(1) */
+ }
+
+ return 0;
+}
+
+/* { dg-final { run-gcov gcov-pr85217.c } } */
diff --git a/gcc/testsuite/gcc.misc-tests/gcov-pr85332.c b/gcc/testsuite/gcc.misc-tests/gcov-pr85332.c
new file mode 100644
index 0000000..73e50b1
--- /dev/null
+++ b/gcc/testsuite/gcc.misc-tests/gcov-pr85332.c
@@ -0,0 +1,26 @@
+/* { dg-options "-fprofile-arcs -ftest-coverage" } */
+/* { dg-do run { target native } } */
+
+int doit(int sel, int n, void *p)
+{
+ int * const p0 = p;
+
+ switch (sel)
+ {
+ case 0: /* count(3) */
+ do {*p0 += *p0;} while (--n); /* count(3) */
+ return *p0 == 0; /* count(1) */
+
+ default:
+ __builtin_abort ();
+ }
+}
+
+int main()
+{
+ int v0;
+ v0 = 1; doit(0, 3, &v0);
+ __builtin_exit (0);
+}
+
+/* { dg-final { run-gcov gcov-pr85332.c } } */