[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN PATCH v2 1/2] coverage: simplify the logic of choosing the number of gcov counters depending on the gcc version


  • To: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Mon, 11 Sep 2023 11:53:55 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FnVdRsUsRMeaAXlmN0NZvXA9tc5nTlCc6Ywsc6ysgO4=; b=JW964EWTXS4RttgGtyAlK9qTz760of6AW2R05uYFikcaciJ4K87C8/MSYZia2KtdLd/SBfWXMs6WtC1lB74qIagsMOYAqtD8ZmsznUCnKcRFUsBaon2fxpt+xJ0Q0UpVA1TAFgwFn601pVc23Z2xNyQNX65pCnlV/uCymXKZr5MDLDYoMlQmen1KrsCBYYWJH6oqBHOI6h+3G7FVKCDnk+Xh37Cl8gjMoTuMLaYvGbbk6Jc4XgD2a3IHYoTi5qVyJYYF8KekwG8AckfB5N+/JIxZExToW5ylsjSIU9UvqxaCfgkB517veZ3V2jaxnrh+jDJmhkXKxcgZnxNIb/UT1w==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PJqpCWnQDXInzmjPMD0a4DL9+cGBRDsxyiPcBnXowzpwh9+JYziSxEqJNm0GUAUnlhUAd46Q1gHIrvGXBuIX+2XfPTbUQJ+9YPLc5fFOGIcuhcxd2LyG3z8jnt52dt8lbVsmmIib4gxa0IL9ekTtXrxC+dWNWxZUMcHdyL8H6MB0O1C0DASU8h53TPwoiYQ3LahjO1Jpn9L6PqSaOzb5CfJGpzpCVGRmrwYWyUgNqspFaQwiaV5WgfFuohoDPYsZYfRQYUY8vI8+TrpZp2hMGXtXHtnBYrgK2AHFpiL3JhfUwXMw2VwT/NQulcXxsPRNMo4aDXIlK4XIkzYiSfJPNQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: George Dunlap <george.dunlap@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx, Javi Merino <javi.merino@xxxxxxxxx>
  • Delivery-date: Mon, 11 Sep 2023 09:54:10 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 11.09.2023 11:48, Andrew Cooper wrote:
> On 11/09/2023 8:54 am, Jan Beulich wrote:
>> On 08.09.2023 18:20, Javi Merino wrote:
>>> The current structure of choosing the correct file based on the
>>> compiler version makes us make 33 line files just to define a
>>> constant.  The changes after gcc 4.7 are minimal, just the number of
>>> counters.
>>>
>>> Fold the changes in gcc_4_9.c, gcc_5.c and gcc_7.c into gcc_4_7.c to
>>> remove a lot of the boilerplate and keep the logic of choosing the
>>> GCOV_COUNTER in gcc_4_7.c.
>>>
>>> Signed-off-by: Javi Merino <javi.merino@xxxxxxxxx>
>>> ---
>>>  xen/common/coverage/Makefile  |  6 +-----
>>>  xen/common/coverage/gcc_4_7.c | 17 +++++++++--------
>>>  xen/common/coverage/gcc_4_9.c | 33 ---------------------------------
>>>  xen/common/coverage/gcc_5.c   | 33 ---------------------------------
>>>  xen/common/coverage/gcc_7.c   | 30 ------------------------------
>>>  5 files changed, 10 insertions(+), 109 deletions(-)
>>>  delete mode 100644 xen/common/coverage/gcc_4_9.c
>>>  delete mode 100644 xen/common/coverage/gcc_5.c
>>>  delete mode 100644 xen/common/coverage/gcc_7.c
>>>
>>> diff --git a/xen/common/coverage/Makefile b/xen/common/coverage/Makefile
>>> index 63f98c71d6..d729afc9c7 100644
>>> --- a/xen/common/coverage/Makefile
>>> +++ b/xen/common/coverage/Makefile
>>> @@ -1,11 +1,7 @@
>>>  obj-y += coverage.o
>>>  ifneq ($(CONFIG_CC_IS_CLANG),y)
>>>  obj-y += gcov_base.o gcov.o
>>> -obj-y += $(call cc-ifversion,-lt,0407, \
>>> -           gcc_3_4.o, $(call cc-ifversion,-lt,0409, \
>>> -           gcc_4_7.o, $(call cc-ifversion,-lt,0500, \
>>> -           gcc_4_9.o, $(call cc-ifversion,-lt,0700, \
>>> -           gcc_5.o, gcc_7.o))))
>>> +obj-y += $(call cc-ifversion,-lt,0407, gcc_3_4.o, gcc_4_7.o)
>>>  else
>>>  obj-y += llvm.o
>>>  endif
>>> diff --git a/xen/common/coverage/gcc_4_7.c b/xen/common/coverage/gcc_4_7.c
>>> index 25b4a8bcdc..ddbc9f4bb0 100644
>>> --- a/xen/common/coverage/gcc_4_7.c
>>> +++ b/xen/common/coverage/gcc_4_7.c
>>> @@ -18,15 +18,16 @@
>>>  
>>>  #include "gcov.h"
>>>  
>>> -/*
>>> - * GCOV_COUNTERS will be defined if this file is included by other
>>> - * source files.
>>> - */
>>> -#ifndef GCOV_COUNTERS
>>> -# if !(GCC_VERSION >= 40700 && GCC_VERSION < 40900)
>>> -#  error "Wrong version of GCC used to compile gcov"
>>> -# endif
>>> +#if (GCC_VERSION >= 40700 && GCC_VERSION < 40900)
>>>  #define GCOV_COUNTERS 8
>>> +#elif (GCC_VERSION >= 40900 && GCC_VERSION < 50000)
>>> +#define GCOV_COUNTERS 9
>>> +#elif GCC_VERSION >= 50000 && GCC_VERSION < 70000
>>> +#define GCOV_COUNTERS 10
>>> +#elif GCC_VERSION >= 70000
>>> +#define GCOV_COUNTERS 9
>>> +#else
>>> +#error "Wrong version of GCC used to compile gcov"
>>>  #endif
>> How about inverse order:
>>
>> #if GCC_VERSION >= 70000
>> #define GCOV_COUNTERS 9
>> #elif GCC_VERSION >= 50000
>> #define GCOV_COUNTERS 10
>> #elif GCC_VERSION >= 40900
>> #define GCOV_COUNTERS 9
>> #elif GCC_VERSION >= 40700
>> #define GCOV_COUNTERS 8
>> #else
>> #error "Wrong version of GCC used to compile gcov"
>> #endif
> 
> Forward order is the one that results in a smaller diff when inserting
> new entries.

Hmm, even in forward order one prior #elif will need touching (to amend
the version check), so I'm afraid I don't see such a diff being smaller
(it's uniformly -1/+3 afaict).

> More importantly, it's the more natural way to structure such a list.

I would say multiple views are possible: Naming recent compiler versions
first may also be viewed as beneficial. In the end what counts is how
easy it is to follow the overall construct. And I'm pretty sure less
complex expressions help there.

Jan



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.