Hello Jørgen,

thanks for the updated patch. I used it for a test suite run and the results look quite good.

Could you please add this hunk to your patch set:

diff --git a/libgcc/libgcov-merge.c b/libgcc/libgcov-merge.c
index 89741f637e1..9e3e8ee5657 100644
--- a/libgcc/libgcov-merge.c
+++ b/libgcc/libgcov-merge.c
@@ -33,6 +33,11 @@ void __gcov_merge_add (gcov_type *counters __attribute__ ((unused)),
                        unsigned n_counters __attribute__ ((unused))) {}
 #endif

+#ifdef L_gcov_merge_ior
+void __gcov_merge_ior (gcov_type *counters  __attribute__ ((unused)),
+                      unsigned n_counters __attribute__ ((unused))) {}
+#endif
+
 #ifdef L_gcov_merge_topn
 void __gcov_merge_topn (gcov_type *counters  __attribute__ ((unused)),
                        unsigned n_counters __attribute__ ((unused))) {}

It is necessary to use gcov in freestanding environments (inhibit_libc is defined).

The condition profiling found one spot for which we have insufficient condition coverage:

function _Leap_year called 227 returned 100% blocks executed 100%
      227:   54:static bool _Leap_year(
        -:   55:  uint32_t year
        -:   56:)
        -:   57:{
227: 58: return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);
branch  0 taken 19% (fallthrough)
branch  1 taken 81%
branch  2 taken 16% (fallthrough)
branch  3 taken 84%
branch  4 taken 4% (fallthrough)
branch  5 taken 96%
conditions covered 5/6
condition  1 not covered (false)
        -:   59:}

This is because we don't test with the year 2100 for example. This value would result in:

year % 4 == 0: true
year % 100 != 0: false
year % 400 == 0: false

It was not immediately clear to me what the

"conditions covered 5/6
condition  1 not covered (false)"

is supposed to tell me. I guess a reasonable interpretation is: condition 1 (which is "(year % 100) != 0" should be false and determine the outcome of the decision.

What could be a bit confusing is that we have "conditions covered 5/6", however, there are only three conditions (0: (year % 4) == 0, 1: (year % 100) != 0, 2: (year % 400) == 0). Maybe it would be more clear if the report says "condition variants covered 5/6" or something like this.

--
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.hu...@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/

Reply via email to