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