aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2016-05-25 11:10:16 +0200
committerMartin Liska <marxin@gcc.gnu.org>2016-05-25 09:10:16 +0000
commit6aa1abe5f29491a70fda964f13427a82fd65df95 (patch)
tree3cedd4ace7a4559e46d2ca798869238026482aac /gcc
parent6ca8e33c66be2e2ce42f2bc211f6589db37e3c7d (diff)
downloadgcc-6aa1abe5f29491a70fda964f13427a82fd65df95.zip
gcc-6aa1abe5f29491a70fda964f13427a82fd65df95.tar.gz
gcc-6aa1abe5f29491a70fda964f13427a82fd65df95.tar.bz2
re PR tree-optimization/71239 (ICE in operand_equal_p (fold-const.c:2769))
Fix PR tree-optimization/71239. * g++.dg/pr71239.C: New test. PR tree-optimization/71239 * tree.c (array_at_struct_end_p): Do not call operand_equal_p if DECL_SIZE is NULL. From-SVN: r236696
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/tree.c3
3 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 10b4235..cad9dab 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-05-25 Martin Liska <mliska@suse.cz>
+
+ PR tree-optimization/71239
+ * tree.c (array_at_struct_end_p): Do not call operand_equal_p
+ if DECL_SIZE is NULL.
+
2016-05-25 Richard Biener <rguenther@suse.de>
* timevar.def (TV_TREE_LOOP_IFCVT): Add.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f670a90..d7a59ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2016-05-25 Martin Liska <mliska@suse.cz>
+
+ * g++.dg/pr71239.C: New test.
+
2016-05-25 Richard Biener <rguenther@suse.de>
* gcc/testsuite/gcc.dg/vect/pr58135.c: Rename to ...
diff --git a/gcc/tree.c b/gcc/tree.c
index 83dc7d8..f4b470b 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -13097,7 +13097,8 @@ array_at_struct_end_p (tree ref)
is valid because BUF allocate enough space. */
- && (!size || operand_equal_p (DECL_SIZE (ref), size, 0))
+ && (!size || (DECL_SIZE (ref) != NULL
+ && operand_equal_p (DECL_SIZE (ref), size, 0)))
&& !(flag_unconstrained_commons
&& TREE_CODE (ref) == VAR_DECL && DECL_COMMON (ref)))
return false;