summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-08 08:50:00 +0000
committernathan <nathan@138bc75d-0d04-0410-961f-82ee72b054a4>2004-07-08 08:50:00 +0000
commit0f59d5a36813fbb8193cd8f4cb9537e4ecbb0c61 (patch)
tree8ae017350a8597506e31729d3529fb02694e16a1
parent4f7f7efd45b15639029ff88aa51f27e284dd381c (diff)
downloadgcc-0f59d5a36813fbb8193cd8f4cb9537e4ecbb0c61.tar.gz
* tree-ssa-ccp.c (fold_stmt): Get type directly from
OBJ_TYPE_REF_OBJECT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84280 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-ccp.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fa0aefcc469..0b18c5100ce 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-08 Richard Henderson <rth@redhat.com>
+
+ * tree-ssa-ccp.c (fold_stmt): Get type directly from
+ OBJ_TYPE_REF_OBJECT.
+
2004-07-08 Joseph S. Myers <jsm@polyomino.org.uk>
Neil Booth <neil@daikokuya.co.uk>
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 70b91f26520..f8b8ab90e99 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -2068,7 +2068,12 @@ fold_stmt (tree *stmt_p)
{
tree t;
- t = TREE_TYPE (TREE_OPERAND (OBJ_TYPE_REF_OBJECT (callee), 0));
+ /* ??? Caution: Broken ADDR_EXPR semantics means that
+ looking at the type of the operand of the addr_expr
+ can yield an array type. See silly exception in
+ check_pointer_types_r. */
+
+ t = TREE_TYPE (TREE_TYPE (OBJ_TYPE_REF_OBJECT (callee)));
t = lang_hooks.fold_obj_type_ref (callee, t);
if (t)
{