aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-06-14 10:55:31 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-06-14 10:55:31 +0000
commitbb4291d9ded2c423a993a411acbcb910903d32af (patch)
tree64eae6d3e84af837dc480a818f602e6a07365b4e /gcc
parenta16fa075a887aad84b4de0d6d396bec06d539e39 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/tree-vect-generic.c6
-rw-r--r--gcc/tree.c3
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;
}
diff --git a/gcc/tree.c b/gcc/tree.c
index b0c3a79..2d3b26e 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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