|
| From: | Richard Henderson |
| Subject: | Re: [PATCH] target/ppc: fix unreachable code in do_ldst_quad() |
| Date: | Sun, 24 Jul 2022 15:10:37 -0700 |
| User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 |
On 7/20/22 19:27, Daniel Henrique Barboza wrote:
Coverity reports that commit fc34e81acd51 ("target/ppc: add macros to check privilege level") turned the following code unreachable: if (!prefixed && !(ctx->insns_flags2 & PPC2_LSQ_ISA207)) { /* lq and stq were privileged prior to V. 2.07 */ REQUIRE_SV(ctx);CID 1490757: Control flow issues (UNREACHABLE) This code cannot be reached: "if (ctx->le_mode) {if (ctx->le_mode) { gen_align_no_le(ctx); return true; } } This happens because the macro REQUIRE_SV(), in CONFIG_USER_MODE, will always result in a 'return true' statement.
I think adding ifdefs isn't fantastic. This isn't actually fix a bug, so we *could* just mark this as ignore in Coverity.
If you wanted to clean this up, remove the implicit control flow from REQUIRE_* and turn the macros into pure predicates, so that you get
if (REQUIRE_SV(ctx)) {
return true;
}
if (ctx->le_mode) {
...
}
r~
| [Prev in Thread] | Current Thread | [Next in Thread] |