diff options
author | Martin Liska <mliska@suse.cz> | 2018-07-31 12:33:21 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-07-31 10:33:21 +0000 |
commit | 102fcf94e625a2016a65829c73a42bd6c2420376 (patch) | |
tree | adbc04540f28f40a8827907f4f6b9b8e4883323a /gcc/testsuite | |
parent | 5dbc3940fcd15ff477eb556630734017dd2b0cff (diff) | |
download | gcc-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/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.misc-tests/gcov-pr83813.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.misc-tests/gcov-pr84758.c | 28 | ||||
-rw-r--r-- | gcc/testsuite/gcc.misc-tests/gcov-pr85217.c | 20 | ||||
-rw-r--r-- | gcc/testsuite/gcc.misc-tests/gcov-pr85332.c | 26 |
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 } } */ |