diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-08 14:40:30 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-08-08 14:40:30 +0000 |
commit | 7ecda5e8e181d2d2c5b79c7d4159ce305d402fa5 (patch) | |
tree | 3b48e76184517cb4ee08b82df374d2a7e86ec1e2 /gcc/tree-stdarg.c | |
parent | 44f67683401d7c457b3fd2e145cd0ae6fdb8ca20 (diff) | |
download | gcc-7ecda5e8e181d2d2c5b79c7d4159ce305d402fa5.tar.gz |
2012-08-08 Richard Guenther <rguenther@suse.de>
* tree-call-cdce.c (check_pow): Simplify.
(gen_conditions_for_pow_int_base): Likewise.
* tree-ssa-dom.c (propagate_rhs_into_lhs): Do not handle
virtual operands here.
* tree-ssa-operands.c (get_name_decl): Remove unused function.
* gimplify.c (gimple_regimplify_operands): Remove dead code.
* tree-vrp.c (get_value_range): Move SSA_NAME_VAR access.
* tree-parloops.c (create_phi_for_local_result): Use copy_ssa_name.
* value-prof.c (gimple_ic): Use duplicate_ssa_name.
(gimple_stringop_fixed_value): Likewise.
* tree.c (needs_to_live_in_memory): Remove SSA name handling.
* tree-stdarg.c (find_va_list_reference): Store SSA_NAME_VERSIONs
in the bitmap alongside shifted DECL_UIDs.
(va_list_counter_struct_op): Likewise.
(va_list_ptr_read): Likewise.
(va_list_ptr_write): Likewise.
(check_va_list_escapes): Likewise.
(check_all_va_list_escapes): Likewise.
(execute_optimize_stdarg): Likewise.
* tree-outof-ssa.c (insert_backedge_copies): Use copy_ssa_name.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190229 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-stdarg.c')
-rw-r--r-- | gcc/tree-stdarg.c | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index 9b7a126b1ef..16c3bee6993 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -266,11 +266,15 @@ find_va_list_reference (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED, tree var = *tp; if (TREE_CODE (var) == SSA_NAME) - var = SSA_NAME_VAR (var); - - if (TREE_CODE (var) == VAR_DECL - && bitmap_bit_p (va_list_vars, DECL_UID (var))) - return var; + { + if (bitmap_bit_p (va_list_vars, SSA_NAME_VERSION (var))) + return var; + } + else if (TREE_CODE (var) == VAR_DECL) + { + if (bitmap_bit_p (va_list_vars, DECL_UID (var) + num_ssa_names)) + return var; + } return NULL_TREE; } @@ -347,12 +351,12 @@ va_list_counter_struct_op (struct stdarg_info *si, tree ap, tree var, return false; if (TREE_CODE (var) != SSA_NAME - || bitmap_bit_p (si->va_list_vars, DECL_UID (SSA_NAME_VAR (var)))) + || bitmap_bit_p (si->va_list_vars, SSA_NAME_VERSION (var))) return false; base = get_base_address (ap); if (TREE_CODE (base) != VAR_DECL - || !bitmap_bit_p (si->va_list_vars, DECL_UID (base))) + || !bitmap_bit_p (si->va_list_vars, DECL_UID (base) + num_ssa_names)) return false; if (TREE_OPERAND (ap, 1) == va_list_gpr_counter_field) @@ -371,13 +375,11 @@ static bool va_list_ptr_read (struct stdarg_info *si, tree ap, tree tem) { if (TREE_CODE (ap) != VAR_DECL - || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap))) + || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap) + num_ssa_names)) return false; if (TREE_CODE (tem) != SSA_NAME - || bitmap_bit_p (si->va_list_vars, - DECL_UID (SSA_NAME_VAR (tem))) - || is_global_var (SSA_NAME_VAR (tem))) + || bitmap_bit_p (si->va_list_vars, SSA_NAME_VERSION (tem))) return false; if (si->compute_sizes < 0) @@ -405,8 +407,8 @@ va_list_ptr_read (struct stdarg_info *si, tree ap, tree tem) /* Note the temporary, as we need to track whether it doesn't escape the current function. */ - bitmap_set_bit (si->va_list_escape_vars, - DECL_UID (SSA_NAME_VAR (tem))); + bitmap_set_bit (si->va_list_escape_vars, SSA_NAME_VERSION (tem)); + return true; } @@ -423,11 +425,11 @@ va_list_ptr_write (struct stdarg_info *si, tree ap, tree tem2) unsigned HOST_WIDE_INT increment; if (TREE_CODE (ap) != VAR_DECL - || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap))) + || !bitmap_bit_p (si->va_list_vars, DECL_UID (ap) + num_ssa_names)) return false; if (TREE_CODE (tem2) != SSA_NAME - || bitmap_bit_p (si->va_list_vars, DECL_UID (SSA_NAME_VAR (tem2)))) + || bitmap_bit_p (si->va_list_vars, SSA_NAME_VERSION (tem2))) return false; if (si->compute_sizes <= 0) @@ -459,23 +461,21 @@ check_va_list_escapes (struct stdarg_info *si, tree lhs, tree rhs) if (TREE_CODE (rhs) == SSA_NAME) { - if (! bitmap_bit_p (si->va_list_escape_vars, - DECL_UID (SSA_NAME_VAR (rhs)))) + if (! bitmap_bit_p (si->va_list_escape_vars, SSA_NAME_VERSION (rhs))) return; } else if (TREE_CODE (rhs) == ADDR_EXPR && TREE_CODE (TREE_OPERAND (rhs, 0)) == MEM_REF && TREE_CODE (TREE_OPERAND (TREE_OPERAND (rhs, 0), 0)) == SSA_NAME) { - if (! bitmap_bit_p (si->va_list_escape_vars, - DECL_UID (SSA_NAME_VAR (TREE_OPERAND - (TREE_OPERAND (rhs, 0), 0))))) + tree ptr = TREE_OPERAND (TREE_OPERAND (rhs, 0), 0); + if (! bitmap_bit_p (si->va_list_escape_vars, SSA_NAME_VERSION (ptr))) return; } else return; - if (TREE_CODE (lhs) != SSA_NAME || is_global_var (SSA_NAME_VAR (lhs))) + if (TREE_CODE (lhs) != SSA_NAME) { si->va_list_escapes = true; return; @@ -511,8 +511,7 @@ check_va_list_escapes (struct stdarg_info *si, tree lhs, tree rhs) return; } - bitmap_set_bit (si->va_list_escape_vars, - DECL_UID (SSA_NAME_VAR (lhs))); + bitmap_set_bit (si->va_list_escape_vars, SSA_NAME_VERSION (lhs)); } @@ -540,7 +539,7 @@ check_all_va_list_escapes (struct stdarg_info *si) FOR_EACH_SSA_TREE_OPERAND (use, stmt, iter, SSA_OP_ALL_USES) { if (! bitmap_bit_p (si->va_list_escape_vars, - DECL_UID (SSA_NAME_VAR (use)))) + SSA_NAME_VERSION (use))) continue; if (is_gimple_assign (stmt)) @@ -586,12 +585,12 @@ check_all_va_list_escapes (struct stdarg_info *si) if (TREE_CODE (lhs) == SSA_NAME && bitmap_bit_p (si->va_list_escape_vars, - DECL_UID (SSA_NAME_VAR (lhs)))) + SSA_NAME_VERSION (lhs))) continue; if (TREE_CODE (lhs) == VAR_DECL && bitmap_bit_p (si->va_list_vars, - DECL_UID (lhs))) + DECL_UID (lhs) + num_ssa_names)) continue; } else if (rhs_code == ADDR_EXPR @@ -601,7 +600,7 @@ check_all_va_list_escapes (struct stdarg_info *si) tree lhs = gimple_assign_lhs (stmt); if (bitmap_bit_p (si->va_list_escape_vars, - DECL_UID (SSA_NAME_VAR (lhs)))) + SSA_NAME_VERSION (lhs))) continue; } } @@ -722,7 +721,7 @@ execute_optimize_stdarg (void) break; } - bitmap_set_bit (si.va_list_vars, DECL_UID (ap)); + bitmap_set_bit (si.va_list_vars, DECL_UID (ap) + num_ssa_names); /* VA_START_BB and VA_START_AP will be only used if there is just one va_start in the function. */ |