Another set of small changes. Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard. 2012-08-09 Richard Guenther <rguent...@suse.de> * tree.h (SSA_VAR_P): Simplify. * tree-ssanames.c (make_ssa_name_fn): Strengthen assert. * fold-const.c (fold_comparison): Check for default def first before checking for PARM_DECL. * tree-complex.c (get_component_ssa_name): Likewise. * tree-inline.c (remap_ssa_name): Likewise. * tree-ssa-loop-ivopts.c (parm_decl_cost): Likewise. * tree-ssa-structalias.c (get_fi_for_callee): Likewise. (find_what_p_points_to): Likewise. * tree-ssa-operands.c (add_stmt_operand): Simplify. Index: trunk/gcc/fold-const.c =================================================================== *** trunk.orig/gcc/fold-const.c 2012-08-08 16:49:38.000000000 +0200 --- trunk/gcc/fold-const.c 2012-08-09 11:08:52.273217092 +0200 *************** fold_comparison (location_t loc, enum tr *** 8940,8955 **** && auto_var_in_fn_p (base0, current_function_decl) && !indirect_base1 && TREE_CODE (base1) == SSA_NAME ! && TREE_CODE (SSA_NAME_VAR (base1)) == PARM_DECL ! && SSA_NAME_IS_DEFAULT_DEF (base1)) || (TREE_CODE (arg1) == ADDR_EXPR && indirect_base1 && TREE_CODE (base1) == VAR_DECL && auto_var_in_fn_p (base1, current_function_decl) && !indirect_base0 && TREE_CODE (base0) == SSA_NAME ! && TREE_CODE (SSA_NAME_VAR (base0)) == PARM_DECL ! && SSA_NAME_IS_DEFAULT_DEF (base0))) { if (code == NE_EXPR) return constant_boolean_node (1, type); --- 8940,8955 ---- && auto_var_in_fn_p (base0, current_function_decl) && !indirect_base1 && TREE_CODE (base1) == SSA_NAME ! && SSA_NAME_IS_DEFAULT_DEF (base1) ! && TREE_CODE (SSA_NAME_VAR (base1)) == PARM_DECL) || (TREE_CODE (arg1) == ADDR_EXPR && indirect_base1 && TREE_CODE (base1) == VAR_DECL && auto_var_in_fn_p (base1, current_function_decl) && !indirect_base0 && TREE_CODE (base0) == SSA_NAME ! && SSA_NAME_IS_DEFAULT_DEF (base0) ! && TREE_CODE (SSA_NAME_VAR (base0)) == PARM_DECL)) { if (code == NE_EXPR) return constant_boolean_node (1, type); Index: trunk/gcc/tree-complex.c =================================================================== *** trunk.orig/gcc/tree-complex.c 2012-08-08 16:49:38.000000000 +0200 --- trunk/gcc/tree-complex.c 2012-08-09 11:19:15.799195507 +0200 *************** get_component_ssa_name (tree ssa_name, b *** 495,502 **** is used in an abnormal phi, and whether it's uninitialized. */ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ret) = SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ssa_name); ! if (TREE_CODE (SSA_NAME_VAR (ssa_name)) == VAR_DECL ! && SSA_NAME_IS_DEFAULT_DEF (ssa_name)) { SSA_NAME_DEF_STMT (ret) = SSA_NAME_DEF_STMT (ssa_name); set_ssa_default_def (cfun, SSA_NAME_VAR (ret), ret); --- 495,502 ---- is used in an abnormal phi, and whether it's uninitialized. */ SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ret) = SSA_NAME_OCCURS_IN_ABNORMAL_PHI (ssa_name); ! if (SSA_NAME_IS_DEFAULT_DEF (ssa_name) ! && TREE_CODE (SSA_NAME_VAR (ssa_name)) == VAR_DECL) { SSA_NAME_DEF_STMT (ret) = SSA_NAME_DEF_STMT (ssa_name); set_ssa_default_def (cfun, SSA_NAME_VAR (ret), ret); Index: trunk/gcc/tree-inline.c =================================================================== *** trunk.orig/gcc/tree-inline.c 2012-08-08 16:49:38.000000000 +0200 --- trunk/gcc/tree-inline.c 2012-08-09 11:19:15.800195507 +0200 *************** remap_ssa_name (tree name, copy_body_dat *** 187,194 **** if (processing_debug_stmt) { ! if (TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL ! && SSA_NAME_IS_DEFAULT_DEF (name) && id->entry_bb == NULL && single_succ_p (ENTRY_BLOCK_PTR)) { --- 187,194 ---- if (processing_debug_stmt) { ! if (SSA_NAME_IS_DEFAULT_DEF (name) ! && TREE_CODE (SSA_NAME_VAR (name)) == PARM_DECL && id->entry_bb == NULL && single_succ_p (ENTRY_BLOCK_PTR)) { Index: trunk/gcc/tree-ssa-loop-ivopts.c =================================================================== *** trunk.orig/gcc/tree-ssa-loop-ivopts.c 2012-08-08 16:49:38.000000000 +0200 --- trunk/gcc/tree-ssa-loop-ivopts.c 2012-08-09 11:19:15.801195507 +0200 *************** parm_decl_cost (struct ivopts_data *data *** 4657,4664 **** STRIP_NOPS (sbound); if (TREE_CODE (sbound) == SSA_NAME && TREE_CODE (SSA_NAME_VAR (sbound)) == PARM_DECL - && gimple_nop_p (SSA_NAME_DEF_STMT (sbound)) && data->body_includes_call) return COSTS_N_INSNS (1); --- 4657,4664 ---- STRIP_NOPS (sbound); if (TREE_CODE (sbound) == SSA_NAME + && SSA_NAME_IS_DEFAULT_DEF (sbound) && TREE_CODE (SSA_NAME_VAR (sbound)) == PARM_DECL && data->body_includes_call) return COSTS_N_INSNS (1); Index: trunk/gcc/tree-ssa-operands.c =================================================================== *** trunk.orig/gcc/tree-ssa-operands.c 2012-08-08 16:49:46.000000000 +0200 --- trunk/gcc/tree-ssa-operands.c 2012-08-08 16:50:16.663499320 +0200 *************** add_virtual_operand (gimple stmt ATTRIBU *** 615,633 **** static void add_stmt_operand (tree *var_p, gimple stmt, int flags) { ! tree var, sym; gcc_assert (SSA_VAR_P (*var_p)); ! var = *var_p; ! sym = (TREE_CODE (var) == SSA_NAME ? SSA_NAME_VAR (var) : var); ! ! /* Mark statements with volatile operands. */ ! if (!(flags & opf_no_vops) ! && TREE_THIS_VOLATILE (sym)) ! gimple_set_has_volatile_ops (stmt, true); ! ! if (is_gimple_reg (sym)) { /* The variable is a GIMPLE register. Add it to real operands. */ if (flags & opf_def) --- 615,625 ---- static void add_stmt_operand (tree *var_p, gimple stmt, int flags) { ! tree var = *var_p; gcc_assert (SSA_VAR_P (*var_p)); ! if (is_gimple_reg (var)) { /* The variable is a GIMPLE register. Add it to real operands. */ if (flags & opf_def) *************** add_stmt_operand (tree *var_p, gimple st *** 636,642 **** append_use (var_p); } else ! add_virtual_operand (stmt, flags); } /* Mark the base address of REF as having its address taken. --- 628,642 ---- append_use (var_p); } else ! { ! /* Mark statements with volatile operands. */ ! if (!(flags & opf_no_vops) ! && TREE_THIS_VOLATILE (var)) ! gimple_set_has_volatile_ops (stmt, true); ! ! /* The variable is a memory access. Add virtual operands. */ ! add_virtual_operand (stmt, flags); ! } } /* Mark the base address of REF as having its address taken. Index: trunk/gcc/tree-ssa-structalias.c =================================================================== *** trunk.orig/gcc/tree-ssa-structalias.c 2012-08-08 16:49:38.000000000 +0200 --- trunk/gcc/tree-ssa-structalias.c 2012-08-09 11:20:31.608192901 +0200 *************** get_fi_for_callee (gimple call) *** 3976,3984 **** if (!fn || TREE_CODE (fn) != SSA_NAME) return get_varinfo (anything_id); ! if ((TREE_CODE (SSA_NAME_VAR (fn)) == PARM_DECL ! || TREE_CODE (SSA_NAME_VAR (fn)) == RESULT_DECL) ! && SSA_NAME_IS_DEFAULT_DEF (fn)) fn = SSA_NAME_VAR (fn); return get_vi_for_tree (fn); --- 3976,3984 ---- if (!fn || TREE_CODE (fn) != SSA_NAME) return get_varinfo (anything_id); ! if (SSA_NAME_IS_DEFAULT_DEF (fn) ! && (TREE_CODE (SSA_NAME_VAR (fn)) == PARM_DECL ! || TREE_CODE (SSA_NAME_VAR (fn)) == RESULT_DECL)) fn = SSA_NAME_VAR (fn); return get_vi_for_tree (fn); *************** find_what_p_points_to (tree p) *** 5915,5923 **** /* For parameters, get at the points-to set for the actual parm decl. */ if (TREE_CODE (p) == SSA_NAME && (TREE_CODE (SSA_NAME_VAR (p)) == PARM_DECL ! || TREE_CODE (SSA_NAME_VAR (p)) == RESULT_DECL) ! && SSA_NAME_IS_DEFAULT_DEF (p)) lookup_p = SSA_NAME_VAR (p); vi = lookup_vi_for_tree (lookup_p); --- 5915,5923 ---- /* For parameters, get at the points-to set for the actual parm decl. */ if (TREE_CODE (p) == SSA_NAME + && SSA_NAME_IS_DEFAULT_DEF (p) && (TREE_CODE (SSA_NAME_VAR (p)) == PARM_DECL ! || TREE_CODE (SSA_NAME_VAR (p)) == RESULT_DECL)) lookup_p = SSA_NAME_VAR (p); vi = lookup_vi_for_tree (lookup_p); Index: trunk/gcc/tree-ssanames.c =================================================================== *** trunk.orig/gcc/tree-ssanames.c 2012-08-08 16:49:38.000000000 +0200 --- trunk/gcc/tree-ssanames.c 2012-08-09 11:22:03.026189723 +0200 *************** make_ssa_name_fn (struct function *fn, t *** 118,124 **** tree t; use_operand_p imm; ! gcc_assert (DECL_P (var)); /* If our free list has an element, then use it. */ if (!VEC_empty (tree, FREE_SSANAMES (fn))) --- 118,126 ---- tree t; use_operand_p imm; ! gcc_assert (TREE_CODE (var) == VAR_DECL ! || TREE_CODE (var) == PARM_DECL ! || TREE_CODE (var) == RESULT_DECL); /* If our free list has an element, then use it. */ if (!VEC_empty (tree, FREE_SSANAMES (fn))) Index: trunk/gcc/tree.h =================================================================== *** trunk.orig/gcc/tree.h 2012-08-08 16:49:38.000000000 +0200 --- trunk/gcc/tree.h 2012-08-09 11:22:54.653187917 +0200 *************** struct GTY (()) tree_binfo { *** 2635,2650 **** /* Define fields and accessors for nodes representing declared names. */ ! /* Nonzero if DECL represents a variable for the SSA passes. */ #define SSA_VAR_P(DECL) \ (TREE_CODE (DECL) == VAR_DECL \ || TREE_CODE (DECL) == PARM_DECL \ || TREE_CODE (DECL) == RESULT_DECL \ ! || (TREE_CODE (DECL) == SSA_NAME \ ! && (TREE_CODE (SSA_NAME_VAR (DECL)) == VAR_DECL \ ! || TREE_CODE (SSA_NAME_VAR (DECL)) == PARM_DECL \ ! || TREE_CODE (SSA_NAME_VAR (DECL)) == RESULT_DECL))) ! --- 2652,2664 ---- /* Define fields and accessors for nodes representing declared names. */ ! /* Nonzero if DECL represents an SSA name or a variable that can possibly ! have an associated SSA name. */ #define SSA_VAR_P(DECL) \ (TREE_CODE (DECL) == VAR_DECL \ || TREE_CODE (DECL) == PARM_DECL \ || TREE_CODE (DECL) == RESULT_DECL \ ! || TREE_CODE (DECL) == SSA_NAME)