diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-12-10 00:29:33 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-12-10 00:31:01 +0100 |
| commit | 7a9da618ba96a30e8a09543cac030c4d44b829a7 (patch) | |
| tree | 8291c9aabdf779611eec4e6b509cbf2662bd2d08 /linearize.c | |
| parent | a00755aafac28395aeb8fb3b6eb9f3801574cc97 (diff) | |
| download | sparse-dev-7a9da618ba96a30e8a09543cac030c4d44b829a7.tar.gz | |
move check_access() to late_warnings()
check_access() is called at each run of simplify_loads().
However, a bad access can belong to a dead branch and thus a
bad access warning can be issued for code that is not executed,
maybe specifically excluded.
So, move check_access() to late_warnings(), where all optimizations
have been done.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'linearize.c')
| -rw-r--r-- | linearize.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/linearize.c b/linearize.c index 9fecb4b5..0250c6bb 100644 --- a/linearize.c +++ b/linearize.c @@ -2532,6 +2532,12 @@ static void late_warnings(struct entrypoint *ep) continue; if (insn->tainted) check_tainted_insn(insn); + switch (insn->opcode) { + case OP_LOAD: + // Check for illegal offsets. + check_access(insn); + break; + } } END_FOR_EACH_PTR(insn); } END_FOR_EACH_PTR(bb); } |
