diff options
author | Richard Biener <rguenther@suse.de> | 2018-06-14 10:55:31 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-06-14 10:55:31 +0000 |
commit | bb4291d9ded2c423a993a411acbcb910903d32af (patch) | |
tree | 64eae6d3e84af837dc480a818f602e6a07365b4e /gcc | |
parent | a16fa075a887aad84b4de0d6d396bec06d539e39 (diff) | |
download | gcc-bb4291d9ded2c423a993a411acbcb910903d32af.zip gcc-bb4291d9ded2c423a993a411acbcb910903d32af.tar.gz gcc-bb4291d9ded2c423a993a411acbcb910903d32af.tar.bz2 |
re PR target/86139 (ICE in in store_constructor, at expr.c:6849 on arm-linux-gnueabihf)
2018-06-14 Richard Biener <rguenther@suse.de>
PR middle-end/86139
* tree-vect-generic.c (build_word_mode_vector_type): Remove
duplicate and harmful type_hash_canon.
* tree.c (type_hash_canon): Assert we didn't find ourselves.
From-SVN: r261588
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/tree-vect-generic.c | 6 | ||||
-rw-r--r-- | gcc/tree.c | 3 |
3 files changed, 10 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bdd9493..2697048 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2018-06-14 Richard Biener <rguenther@suse.de> + PR middle-end/86139 + * tree-vect-generic.c (build_word_mode_vector_type): Remove + duplicate and harmful type_hash_canon. + * tree.c (type_hash_canon): Assert we didn't find ourselves. + +2018-06-14 Richard Biener <rguenther@suse.de> + PR ipa/86124 * tree-ssa-struct-alias.c (create_variable_info_for): Handle NULL cgraph_node. diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index 46502c4..909f790 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -111,12 +111,8 @@ build_word_mode_vector_type (int nunits) return vector_last_type; } - /* We build a new type, but we canonicalize it nevertheless, - because it still saves some memory. */ vector_last_nunits = nunits; - vector_last_type = type_hash_canon (nunits, - build_vector_type (vector_inner_type, - nunits)); + vector_last_type = build_vector_type (vector_inner_type, nunits); return vector_last_type; } @@ -6623,7 +6623,8 @@ type_hash_canon (unsigned int hashcode, tree type) if (*loc) { tree t1 = ((type_hash *) *loc)->type; - gcc_assert (TYPE_MAIN_VARIANT (t1) == t1); + gcc_assert (TYPE_MAIN_VARIANT (t1) == t1 + && t1 != type); if (TYPE_UID (type) + 1 == next_type_uid) --next_type_uid; /* Free also min/max values and the cache for integer |