aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2020-08-20 10:00:49 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2020-08-20 17:01:38 -0400
commit00cb0f5840795698557731c6e549a5ce99573223 (patch)
tree90b910cf566a9f1a84fffb3dadb2ecaa11674d16 /gcc/tree-vectorizer.h
parent1531d8df6ebe3ce3cd1d59a044eafd4e292f9433 (diff)
downloadgcc-00cb0f5840795698557731c6e549a5ce99573223.zip
gcc-00cb0f5840795698557731c6e549a5ce99573223.tar.gz
gcc-00cb0f5840795698557731c6e549a5ce99573223.tar.bz2
analyzer: fix infinite recursion ICE on unions [PR96723]
Attempts to store sm-state into a union in C++ triggered an infinite recursion when trying to generate a representative tree, due to erroneously trying to use the dtor of the union as a field. Fix it by filtering out non-FIELD_DECLs when walking TYPE_FIELDs in region::get_subregions_for_binding. gcc/analyzer/ChangeLog: PR analyzer/96723 * region-model-manager.cc (region_model_manager::get_field_region): Assert that field is a FIELD_DECL. * region.cc (region::get_subregions_for_binding): In union-handling, filter the TYPE_FIELDS traversal to just FIELD_DECLs. gcc/testsuite/ChangeLog: PR analyzer/96723 * g++.dg/analyzer/pr96723.C: New test.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions