[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 09/36] tcg: Consolidate 3 bits into enum TCGTempKind
From: |
Richard Henderson |
Subject: |
Re: [PATCH v2 09/36] tcg: Consolidate 3 bits into enum TCGTempKind |
Date: |
Thu, 23 Apr 2020 08:40:10 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 |
On 4/23/20 2:00 AM, Philippe Mathieu-Daudé wrote:
>>> @@ -1885,12 +1896,17 @@ static char *tcg_get_arg_str_ptr(TCGContext *s,
>>> char *buf, int buf_size,
>>> {
>>> int idx = temp_idx(ts);
>>>
>>> - if (ts->temp_global) {
>>> + switch (ts->kind) {
>>> + case TEMP_FIXED:
>>> + case TEMP_GLOBAL:
>>> pstrcpy(buf, buf_size, ts->name);
>>> - } else if (ts->temp_local) {
>>> + break;
>>> + case TEMP_LOCAL:
>>> snprintf(buf, buf_size, "loc%d", idx - s->nb_globals);
>>> - } else {
>>> + break;
>>> + case TEMP_NORMAL:
>>> snprintf(buf, buf_size, "tmp%d", idx - s->nb_globals);
>>> + break;
>>> }
>>
>> Hmm, why this switch doesn't have:
>>
>> default:
>> g_assert_not_reached();
>>
>> like the other ones?
>
> ... then all switch should have a default case, as noticed Aleksandar.
There's a bit of a conflict between wanting to use -Werror -Wswitch, and making
sure every switch has a default.
With the former, you get a compiler error of the form
error: enumeration value ‘FOO’ not handled in switch
which lets you easily find places that need adjustment enumerators are added.
With the latter, you only get a runtime failure, which can be more difficult to
find if you've missed one.
We do not always have the option of relying on -Wswitch, if there are other
compounding warnings such as uninitialized variables.
In this instance, we can rely on -Wswitch, and I see no reason to add a default
case.
r~
- [PATCH v2 03/36] target/ppc: Use tcg_gen_gvec_dup_imm, (continued)
- [PATCH v2 03/36] target/ppc: Use tcg_gen_gvec_dup_imm, Richard Henderson, 2020/04/21
- [PATCH v2 04/36] target/arm: Use tcg_gen_gvec_dup_imm, Richard Henderson, 2020/04/21
- [PATCH v2 05/36] tcg: Use tcg_gen_gvec_dup_imm in logical simplifications, Richard Henderson, 2020/04/21
- [PATCH v2 07/36] tcg: Add tcg_gen_gvec_dup_tl, Richard Henderson, 2020/04/21
- [PATCH v2 06/36] tcg: Remove tcg_gen_gvec_dup{8,16,32,64}i, Richard Henderson, 2020/04/21
- [PATCH v2 08/36] tcg: Improve vector tail clearing, Richard Henderson, 2020/04/21
- [PATCH v2 09/36] tcg: Consolidate 3 bits into enum TCGTempKind, Richard Henderson, 2020/04/21
[PATCH v2 12/36] tcg: Use tcg_constant_i32 with icount expander, Richard Henderson, 2020/04/21
[PATCH v2 11/36] tcg: Introduce TYPE_CONST temporaries, Richard Henderson, 2020/04/21
[PATCH v2 14/36] tcg: Use tcg_constant_{i32, vec} with tcg vec expanders, Richard Henderson, 2020/04/21