From 3dbe9454540ab183476df93e6ef8eab50fbb13b5 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Sat, 27 Nov 2010 14:32:47 +0000 Subject: gimple.c (gimple_assign_copy_p): Use gimple_assign_single_p. 2010-11-27 Richard Guenther * gimple.c (gimple_assign_copy_p): Use gimple_assign_single_p. (gimple_assign_ssa_name_copy_p): Likewise. (gimple_assign_unary_nop_p): Use is_gimple_assign. (is_gimple_cast): Remove. (gimple_assign_single_p): Move ... * gimple.h (gimple_assign_single_p): ... here. (is_gimple_cast): Remove. (gimple_assign_rhs_code): Simplify. * gimple-fold.c (gimple_fold_builtin): Use CONVERT_EXPR_P instead of is_gimple_cast. * ipa-type-escape.c (look_for_casts): Likewise. From-SVN: r167200 --- gcc/gimple.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'gcc/gimple.h') diff --git a/gcc/gimple.h b/gcc/gimple.h index 150b836..05f5231 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -869,7 +869,6 @@ int gimple_call_arg_flags (const_gimple, unsigned); void gimple_call_reset_alias_info (gimple); bool gimple_assign_copy_p (gimple); bool gimple_assign_ssa_name_copy_p (gimple); -bool gimple_assign_single_p (gimple); bool gimple_assign_unary_nop_p (gimple); void gimple_set_bb (gimple, struct basic_block_def *); void gimple_assign_set_rhs_from_tree (gimple_stmt_iterator *, tree); @@ -944,8 +943,6 @@ extern bool is_gimple_mem_rhs (tree); /* Returns true iff T is a valid if-statement condition. */ extern bool is_gimple_condexpr (tree); -/* Returns true iff T is a type conversion. */ -extern bool is_gimple_cast (tree); /* Returns true iff T is a variable that does not need to live in memory. */ extern bool is_gimple_non_addressable (tree t); @@ -1904,7 +1901,10 @@ gimple_assign_rhs_code (const_gimple gs) enum tree_code code; GIMPLE_CHECK (gs, GIMPLE_ASSIGN); - code = gimple_expr_code (gs); + code = (enum tree_code) gs->gsbase.subcode; + /* While we initially set subcode to the TREE_CODE of the rhs for + GIMPLE_SINGLE_RHS assigns we do not update that subcode to stay + in sync when we rewrite stmts into SSA form or do SSA propagations. */ if (get_gimple_rhs_class (code) == GIMPLE_SINGLE_RHS) code = TREE_CODE (gimple_assign_rhs1 (gs)); @@ -1933,6 +1933,19 @@ gimple_assign_rhs_class (const_gimple gs) return get_gimple_rhs_class (gimple_assign_rhs_code (gs)); } +/* Return true if GS is an assignment with a singleton RHS, i.e., + there is no operator associated with the assignment itself. + Unlike gimple_assign_copy_p, this predicate returns true for + any RHS operand, including those that perform an operation + and do not have the semantics of a copy, such as COND_EXPR. */ + +static inline bool +gimple_assign_single_p (gimple gs) +{ + return (is_gimple_assign (gs) + && gimple_assign_rhs_class (gs) == GIMPLE_SINGLE_RHS); +} + /* Return true if S is a type-cast assignment. */ -- cgit v1.1