From ede94584f755877ef6bbad6db35f074bbe6ddd49 Mon Sep 17 00:00:00 2001 From: hubicka Date: Sat, 2 Oct 2010 22:03:18 +0000 Subject: [PATCH] * tree-ssa-ccp.c (ccp_fold_stmt): Fold away OBJ_TYPE_REF when call destination is known. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164908 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/tree-ssa-ccp.c | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 121a273..1fa311d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-10-02 Jan Hubicka + + * tree-ssa-ccp.c (ccp_fold_stmt): Fold away OBJ_TYPE_REF when + call destination is known. + 2010-10-02 John David Anglin PR target/45820 diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 13c51bc..a3d5155 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -2307,6 +2307,17 @@ ccp_fold_stmt (gimple_stmt_iterator *gsi) changed = true; } } + if (TREE_CODE (gimple_call_fn (stmt)) == OBJ_TYPE_REF) + { + tree expr = OBJ_TYPE_REF_EXPR (gimple_call_fn (stmt)); + expr = valueize_op (expr); + if (TREE_CODE (expr) == ADDR_EXPR + && TREE_CODE (TREE_OPERAND (expr, 0)) == FUNCTION_DECL) + { + gimple_call_set_fn (stmt, expr); + changed = true; + } + } return changed; } -- 2.7.4