aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-fold.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-09-22 12:16:42 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-09-22 12:16:42 +0000
commit9ef2eff0d40fb59ee7538148fc8eb25088777297 (patch)
tree780b38bd2bac90111b2a475dc108d206c07874aa /gcc/gimple-fold.c
parent1f3131cb1e238fa37d0fedb8d5b05761c3dbfef6 (diff)
downloadgcc-9ef2eff0d40fb59ee7538148fc8eb25088777297.zip
gcc-9ef2eff0d40fb59ee7538148fc8eb25088777297.tar.gz
gcc-9ef2eff0d40fb59ee7538148fc8eb25088777297.tar.bz2
re PR tree-optimization/77697 (suspicious code in tree-ssa-forwprop.c)
2016-09-22 Richard Biener <rguenther@suse.de> PR middle-end/77697 * gimple-fold.c (fold_array_ctor_reference): Turn asserts into fold fails. From-SVN: r240353
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r--gcc/gimple-fold.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index addabb7..23e4516 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -5647,14 +5647,15 @@ fold_array_ctor_reference (tree type, tree ctor,
if (domain_type && TYPE_MIN_VALUE (domain_type))
{
/* Static constructors for variably sized objects makes no sense. */
- gcc_assert (TREE_CODE (TYPE_MIN_VALUE (domain_type)) == INTEGER_CST);
+ if (TREE_CODE (TYPE_MIN_VALUE (domain_type)) != INTEGER_CST)
+ return NULL_TREE;
low_bound = wi::to_offset (TYPE_MIN_VALUE (domain_type));
}
else
low_bound = 0;
/* Static constructors for variably sized objects makes no sense. */
- gcc_assert (TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor))))
- == INTEGER_CST);
+ if (TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor)))) != INTEGER_CST)
+ return NULL_TREE;
elt_size = wi::to_offset (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ctor))));
/* We can handle only constantly sized accesses that are known to not