aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/go-lang.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2021-01-04 19:20:32 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2021-01-04 19:20:32 -0500
commit15af33a88065f983181550fc53821f1c6e14c5c7 (patch)
tree8dc2bf2647da05507089886acd6f04a41390e253 /gcc/go/go-lang.c
parent7e73f511573b3656c57f33c079e9bd1d70aaa621 (diff)
downloadgcc-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