diff options
author | David Malcolm <dmalcolm@redhat.com> | 2022-01-28 13:37:51 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2022-02-02 09:55:29 -0500 |
commit | 13ad6d9f50e3f197246b460c4d9a9e80ba2559cf (patch) | |
tree | 5e0440468c2de0836d9963f6b68da0d59565a2c6 /gcc/fortran | |
parent | ea3e1915954371d8230fda44ce6821928f04f80e (diff) | |
download | gcc-13ad6d9f50e3f197246b460c4d9a9e80ba2559cf.zip gcc-13ad6d9f50e3f197246b460c4d9a9e80ba2559cf.tar.gz gcc-13ad6d9f50e3f197246b460c4d9a9e80ba2559cf.tar.bz2 |
analyzer: fix missing check for uninit of return values
When moving the -fanalyzer tests for -ftrivial-auto-var-init to the
"torture" subdirectory of gcc.dg/analyzer I noticed that -fanalyzer
wasn't always properly checking for initialization of return values.
The issue was that some "return" handling was using
region_model::copy_region to copy to the RESULT_DECL, and copy_region
wasn't checking for poisoned svalues.
This patch eliminates region_model::copy_region in favor of simply
doing a get_ravlue/set_value pair, fixing the issue.
gcc/analyzer/ChangeLog:
* region-model.cc (region_model::on_return): Replace usage of
copy_region with get_rvalue/set_value pair.
(region_model::pop_frame): Likewise.
(selftest::test_compound_assignment): Likewise.
* region-model.h (region_model::copy_region): Delete decl.
* region.cc (region_model::copy_region): Delete.
gcc/testsuite/ChangeLog:
* gcc.dg/analyzer/torture/ubsan-1.c: Add missing return stmts.
* gcc.dg/analyzer/uninit-trivial-auto-var-init-pattern.c: Move
to...
* gcc.dg/analyzer/torture/uninit-trivial-auto-var-init-pattern.c:
...here.
* gcc.dg/analyzer/uninit-trivial-auto-var-init-uninitialized.c:
Move to...
* gcc.dg/analyzer/torture/uninit-trivial-auto-var-init-uninitialized.c:
...here.
* gcc.dg/analyzer/uninit-trivial-auto-var-init-zero.c: Move to...
* gcc.dg/analyzer/torture/uninit-trivial-auto-var-init-zero.c: ...here.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions