diff options
author | David Malcolm <dmalcolm@redhat.com> | 2021-01-04 19:20:32 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2021-01-04 19:20:32 -0500 |
commit | 15af33a88065f983181550fc53821f1c6e14c5c7 (patch) | |
tree | 8dc2bf2647da05507089886acd6f04a41390e253 /gcc/go/go-lang.c | |
parent | 7e73f511573b3656c57f33c079e9bd1d70aaa621 (diff) | |
download | gcc-15af33a88065f983181550fc53821f1c6e14c5c7.zip gcc-15af33a88065f983181550fc53821f1c6e14c5c7.tar.gz gcc-15af33a88065f983181550fc53821f1c6e14c5c7.tar.bz2 |
analyzer: fix ICE with -fsanitize=undefined [PR98293]
-fsanitize=undefined with calls to nonnull functions
creates struct __ubsan_nonnull_arg_data instances
with CONSTRUCTORs for RECORD_TYPEs with NULL index values.
The analyzer was mistakenly using INTEGER_CST for these
fields, leading to ICEs.
Fix the issue by iterating through the fields in the type
for such cases, imitating similar logic in varasm.c's
output_constructor.
gcc/analyzer/ChangeLog:
PR analyzer/98293
* store.cc (binding_map::apply_ctor_to_region): When "index" is
NULL, iterate through the fields for RECORD_TYPEs, rather than
creating an INTEGER_CST index.
gcc/testsuite/ChangeLog:
PR analyzer/98293
* gcc.dg/analyzer/pr98293.c: New test.
Diffstat (limited to 'gcc/go/go-lang.c')
0 files changed, 0 insertions, 0 deletions