aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-08-21 08:06:20 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-08-21 08:06:20 +0000
commit4d20d00a0d94ad1e62a194b6f027e8007ceabc1d (patch)
treeb32693bf83d37cce052c0efbf3283c147d1c7a96
parent6b00e42da3a26fae6f878e3b83baffbda7f79227 (diff)
downloadgcc-4d20d00a0d94ad1e62a194b6f027e8007ceabc1d.zip
gcc-4d20d00a0d94ad1e62a194b6f027e8007ceabc1d.tar.gz
gcc-4d20d00a0d94ad1e62a194b6f027e8007ceabc1d.tar.bz2
re PR middle-end/67285 (ICE with (rdiv (POW:s @0 REAL_CST@1) @0))
2015-08-21 Richard Biener <rguenther@suse.de> PR middle-end/67285 * gimple-fold.c (replace_stmt_with_simplification): Assert seq is empty when replacing a call with itself but different arguments. * gimple-match-head.c (maybe_push_res_to_seq): When pushing a call require that it is const. From-SVN: r227053
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/gimple-fold.c1
-rw-r--r--gcc/gimple-match-head.c3
3 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2063885..d7c9883 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2015-08-21 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/67285
+ * gimple-fold.c (replace_stmt_with_simplification): Assert
+ seq is empty when replacing a call with itself but different
+ arguments.
+ * gimple-match-head.c (maybe_push_res_to_seq): When pushing
+ a call require that it is const.
+
2015-08-20 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* defaults.h (CONSTANT_ALIGNMENT): New macro definition.
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index de64c05..c79f9b3 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -3308,6 +3308,7 @@ replace_stmt_with_simplification (gimple_stmt_iterator *gsi,
}
if (i < 3)
gcc_assert (ops[i] == NULL_TREE);
+ gcc_assert (gimple_seq_empty_p (*seq));
return true;
}
else if (!inplace)
diff --git a/gcc/gimple-match-head.c b/gcc/gimple-match-head.c
index 17bd992..90f2486 100644
--- a/gcc/gimple-match-head.c
+++ b/gcc/gimple-match-head.c
@@ -338,6 +338,9 @@ maybe_push_res_to_seq (code_helper rcode, tree type, tree *ops,
tree decl = builtin_decl_implicit (rcode);
if (!decl)
return NULL_TREE;
+ /* We can't and should not emit calls to non-const functions. */
+ if (!(flags_from_decl_or_type (decl) & ECF_CONST))
+ return NULL_TREE;
/* Play safe and do not allow abnormals to be mentioned in
newly created statements. */
unsigned nargs;