aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-11-18 15:49:57 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-11-18 15:49:57 +0000
commit4ba480060a2ab5473b699f57f6f22665c59bff28 (patch)
treebea728e3c94512d0c37fe270e8f9db54cc513423 /gcc
parent6c4322d7a2577f3d0784845efbebaf4f4025f190 (diff)
downloadgcc-4ba480060a2ab5473b699f57f6f22665c59bff28.zip
gcc-4ba480060a2ab5473b699f57f6f22665c59bff28.tar.gz
gcc-4ba480060a2ab5473b699f57f6f22665c59bff28.tar.bz2
re PR tree-optimization/34127 (ICE: tree-ssa-operands.c:1688)
2007-11-18 Richard Guenther <rguenther@suse.de> PR tree-optimization/34127 * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars): Make code match up the comments, require compatibility of the pointed-to types. * gcc.c-torture/compile/pr34127.c: New testcase. From-SVN: r130269
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr34127.c9
-rw-r--r--gcc/tree-ssa-forwprop.c4
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3151f57..da17d5f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2007-11-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/34127
+ * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
+ Make code match up the comments, require compatibility of the
+ pointed-to types.
+
2007-11-17 Richard Guenther <rguenther@suse.de>
PR middle-end/34130
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 62d039e..2868de0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-11-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/34127
+ * gcc.c-torture/compile/pr34127.c: New testcase.
+
2007-11-18 Ben Elliston <bje@au.ibm.com>
* gcc.target/powerpc/altivec-23.c: Do not use a typedef name as a
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr34127.c b/gcc/testsuite/gcc.c-torture/compile/pr34127.c
new file mode 100644
index 0000000..10d41ac
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr34127.c
@@ -0,0 +1,9 @@
+static void
+whichtable(char **pfmt)
+{
+ --*pfmt;
+}
+void prepare_s(const char *fmt)
+{
+ whichtable((char **)&fmt);
+}
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 661d3d2..3e30454 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -959,8 +959,8 @@ tree_ssa_forward_propagate_single_use_vars (void)
|| TREE_CODE (rhs) == CONVERT_EXPR)
&& TREE_CODE (TREE_OPERAND (rhs, 0)) == ADDR_EXPR
&& POINTER_TYPE_P (TREE_TYPE (rhs))
- && useless_type_conversion_p (TREE_TYPE (TREE_TYPE (TREE_OPERAND (rhs, 0))),
- TREE_TYPE (TREE_TYPE (rhs)))))
+ && types_compatible_p (TREE_TYPE (TREE_TYPE (TREE_OPERAND (rhs, 0))),
+ TREE_TYPE (TREE_TYPE (rhs)))))
{
if (forward_propagate_addr_expr (lhs, rhs))
{