From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dedi548.your-server.de (dedi548.your-server.de [85.10.215.148]) by sourceware.org (Postfix) with ESMTPS id 101963858D1E for ; Wed, 6 Apr 2022 07:36:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 101963858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embedded-brains.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embedded-brains.de Received: from sslproxy05.your-server.de ([78.46.172.2]) by dedi548.your-server.de with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1nc0Cu-0005LS-67; Wed, 06 Apr 2022 09:36:00 +0200 Received: from [82.100.198.138] (helo=mail.embedded-brains.de) by sslproxy05.your-server.de with esmtpsa (TLSv1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nc0Cu-0000fY-39; Wed, 06 Apr 2022 09:36:00 +0200 Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id CBF904800A4; Wed, 6 Apr 2022 09:35:59 +0200 (CEST) Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id nInJSaapTVMM; Wed, 6 Apr 2022 09:35:59 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.embedded-brains.de (Postfix) with ESMTP id 7F3A14800CA; Wed, 6 Apr 2022 09:35:59 +0200 (CEST) X-Virus-Scanned: amavisd-new at zimbra.eb.localhost Received: from mail.embedded-brains.de ([127.0.0.1]) by localhost (zimbra.eb.localhost [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id jz8KvfUh48q9; Wed, 6 Apr 2022 09:35:59 +0200 (CEST) Received: from [10.10.171.14] (unknown [10.10.171.14]) by mail.embedded-brains.de (Postfix) with ESMTPSA id 457BB4800A4; Wed, 6 Apr 2022 09:35:59 +0200 (CEST) Message-ID: <119d52c0-713a-b55b-8745-53a2307dfd9f@embedded-brains.de> Date: Wed, 6 Apr 2022 09:35:58 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH] Add condition coverage profiling Content-Language: en-US To: =?UTF-8?Q?J=c3=b8rgen_Kvalsvik?= , gcc-patches@gcc.gnu.org References: <1ee43d5d-9c6c-f55b-e5b1-c82a6ff5f653@embedded-brains.de> <135f1f97-9359-f3fa-7718-4384aa9a376f@woven-planet.global> From: Sebastian Huber In-Reply-To: <135f1f97-9359-f3fa-7718-4384aa9a376f@woven-planet.global> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Authenticated-Sender: smtp-embedded@poldinet.de X-Virus-Scanned: Clear (ClamAV 0.103.5/26503/Tue Apr 5 10:19:26 2022) X-Spam-Status: No, score=-4.9 required=5.0 tests=BAYES_00, BODY_8BITS, KAM_DMARC_STATUS, NICE_REPLY_A, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Apr 2022 07:36:05 -0000 On 05/04/2022 22:07, J=C3=B8rgen Kvalsvik wrote: >>> In action it looks pretty similar to the branch coverage. The -g shor= t >>> opt carries no significance, but was chosen because it was an availab= le >>> option with the upper-case free too. >>> >>> gcov --conditions: >>> >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 3:=C2=A0=C2=A0 17:v= oid fn (int a, int b, int c, int d) { >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 3:=C2=A0=C2=A0 18:=C2= =A0=C2=A0=C2=A0 if ((a && (b || c)) && d) >>> conditions covered 5/8 >>> condition=C2=A0 1 not covered (false) >>> condition=C2=A0 2 not covered (true) >>> condition=C2=A0 2 not covered (false) >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1:=C2=A0=C2=A0 19:=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 x =3D 1; >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -:=C2=A0=C2=A0 20:=C2= =A0=C2=A0=C2=A0 else >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2:=C2=A0=C2=A0 21:=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 x =3D 2; >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 3:=C2=A0=C2=A0 22:} >> I have some trouble to understand the output. Would 8/8 mean that we h= ave 100% >> MC/DC coverage? What does "not covered (false)" or "not covered (true)= " mean? >> > Yes, 8/8 would mean that the expression is 100% covered (all conditions= take on > both values and have independent effect on the outcome).=20 This is really great. > "not covered" is a > report of missing coverage, that is "condition 1 not covered (false)" = means > that bit N (N =3D 1, b in this case) has not taken on false yet, and to= achieve > 100% coverage you need a test case where b =3D false. >=20 > The wording is arbitrary, and I tried to strike a balance between densi= ty, > clarity, grepability and noise. I am open to other suggestions that wou= ld > improve this. Ok, for the default output this is good. The output can be explained in=20 the documentation. I will try to help here. In theory, would it be possible to print the state of the truth table=20 with the information available in the gcda and gcno files? For example: Truth table for: a && (b || c)) && d 0 | 1 | 2 | 3 || covered --+---+---+---++-------- 0 | X | X | X || Y 0 | X | X | X || Y 0 | X | X | X || Y 0 | X | X | X || Y 0 | X | X | X || Y 0 | X | X | X || Y 0 | X | X | X || Y 0 | X | X | X || Y 1 | 0 | 0 | X || N 1 | 0 | 0 | X || N 1 | 0 | 1 | 0 || N 1 | 0 | 1 | 1 || N 1 | 1 | X | 0 || Y 1 | 1 | X | 0 || Y 1 | 1 | X | 1 || Y 1 | 1 | X | 1 || Y Would it be possible to map the condition index to a source code=20 snippet? For example condition 1 to "b"? >=20 > Unrelated to this, in typing up some notes on this I found a few minor = and one > quite significant (really, the masking algorithm is broken) error in th= e > algorithm, which I am working on correcting. I will propose the new pat= ch with > these fixes too once I have finished writing and testing it. Thanks a lot for this work. --=20 embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.huber@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht M=C3=BCnchen Registernummer: HRB 157899 Vertretungsberechtigte Gesch=C3=A4ftsf=C3=BChrer: Peter Rasmussen, Thomas= D=C3=B6rfler Unsere Datenschutzerkl=C3=A4rung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/