Re: [PATCH v5 1/8] x86/resctrl: Prepare for new domain scope

From: Maciej Wieczór-Retman
Date: Thu Aug 31 2023 - 09:02:58 EST


On 2023-08-30 at 14:11:14 +0000, Luck, Tony wrote:
>> >+static int get_domain_id_from_scope(int cpu, enum resctrl_scope scope)
>> >+{
>> >+ switch (scope) {
>> >+ case RESCTRL_L3_CACHE:
>> >+ return get_cpu_cacheinfo_id(cpu, 3);
>> >+ case RESCTRL_L2_CACHE:
>> >+ return get_cpu_cacheinfo_id(cpu, 2);
>> >+ default:
>> >+ WARN_ON_ONCE(1);
>> >+ break;
>> >+ }
>> >+
>> >+ return -1;
>> >+}
>>
>> Is there some reason the "return -1" is outside of the default switch
>> case?
>>
>> Other switch statements in this patch do have returns inside the default
>> case, is this one different in some way?
>
>I've sometimes had compilers complain about code written:
>
>static int get_domain_id_from_scope(int cpu, enum resctrl_scope scope)
>{
> switch (scope) {
> case RESCTRL_L3_CACHE:
> return get_cpu_cacheinfo_id(cpu, 3);
> case RESCTRL_L2_CACHE:
> return get_cpu_cacheinfo_id(cpu, 2);
> default:
> WARN_ON_ONCE(1);
> return -1;
> }
>}
>
>because they failed to notice that every path in the switch does a "return and they
>issue a warning that the function has no return value because they don't realize
>that the end of the function can't be reached.
>
>So it's defensive programming against possible complier issues.

I recall getting that error somewhere while playing around with a
language server protocol for neovim a while ago but I tried to cause
it today with gcc and clang and with some different flags and coulnd't.
Are there some particular compilers or compiler flags that trigger
that?

--
Kind regards
Maciej Wieczór-Retman