diff options
author | Richard Guenther <rguenther@suse.de> | 2007-11-18 15:49:57 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-11-18 15:49:57 +0000 |
commit | 4ba480060a2ab5473b699f57f6f22665c59bff28 (patch) | |
tree | bea728e3c94512d0c37fe270e8f9db54cc513423 /gcc | |
parent | 6c4322d7a2577f3d0784845efbebaf4f4025f190 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr34127.c | 9 | ||||
-rw-r--r-- | gcc/tree-ssa-forwprop.c | 4 |
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)) { |