mirror of git://gcc.gnu.org/git/gcc.git
tree-call-cdce.c (check_pow): Simplify.
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. From-SVN: r190229
This commit is contained in:
parent
3b1e1a029a
commit
6b4a85ad6f
|
|
@ -1,3 +1,26 @@
|
||||||
|
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.
|
||||||
|
|
||||||
2012-08-08 Richard Sandiford <rdsandiford@googlemail.com>
|
2012-08-08 Richard Sandiford <rdsandiford@googlemail.com>
|
||||||
H.J. Lu <hongjiu.lu@intel.com>
|
H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8363,7 +8363,7 @@ void
|
||||||
gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
|
gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
|
||||||
{
|
{
|
||||||
size_t i, num_ops;
|
size_t i, num_ops;
|
||||||
tree orig_lhs = NULL_TREE, lhs;
|
tree lhs;
|
||||||
gimple_seq pre = NULL;
|
gimple_seq pre = NULL;
|
||||||
gimple post_stmt = NULL;
|
gimple post_stmt = NULL;
|
||||||
struct gimplify_ctx gctx;
|
struct gimplify_ctx gctx;
|
||||||
|
|
@ -8429,7 +8429,6 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
|
||||||
and ASMs are executed before the LHS. The ordering is not
|
and ASMs are executed before the LHS. The ordering is not
|
||||||
important for other statements. */
|
important for other statements. */
|
||||||
num_ops = gimple_num_ops (stmt);
|
num_ops = gimple_num_ops (stmt);
|
||||||
orig_lhs = gimple_get_lhs (stmt);
|
|
||||||
for (i = num_ops; i > 0; i--)
|
for (i = num_ops; i > 0; i--)
|
||||||
{
|
{
|
||||||
tree op = gimple_op (stmt, i - 1);
|
tree op = gimple_op (stmt, i - 1);
|
||||||
|
|
@ -8507,10 +8506,6 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
|
||||||
if (need_temp)
|
if (need_temp)
|
||||||
{
|
{
|
||||||
tree temp = create_tmp_reg (TREE_TYPE (lhs), NULL);
|
tree temp = create_tmp_reg (TREE_TYPE (lhs), NULL);
|
||||||
|
|
||||||
if (TREE_CODE (orig_lhs) == SSA_NAME)
|
|
||||||
orig_lhs = SSA_NAME_VAR (orig_lhs);
|
|
||||||
|
|
||||||
if (gimple_in_ssa_p (cfun))
|
if (gimple_in_ssa_p (cfun))
|
||||||
temp = make_ssa_name (temp, NULL);
|
temp = make_ssa_name (temp, NULL);
|
||||||
gimple_set_lhs (stmt, temp);
|
gimple_set_lhs (stmt, temp);
|
||||||
|
|
|
||||||
|
|
@ -203,7 +203,7 @@ check_pow (gimple pow_call)
|
||||||
}
|
}
|
||||||
else if (bc == SSA_NAME)
|
else if (bc == SSA_NAME)
|
||||||
{
|
{
|
||||||
tree base_val0, base_var, type;
|
tree base_val0, type;
|
||||||
gimple base_def;
|
gimple base_def;
|
||||||
int bit_sz;
|
int bit_sz;
|
||||||
|
|
||||||
|
|
@ -217,11 +217,7 @@ check_pow (gimple pow_call)
|
||||||
return false;
|
return false;
|
||||||
base_val0 = gimple_assign_rhs1 (base_def);
|
base_val0 = gimple_assign_rhs1 (base_def);
|
||||||
|
|
||||||
base_var = SSA_NAME_VAR (base_val0);
|
type = TREE_TYPE (base_val0);
|
||||||
if (!DECL_P (base_var))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
type = TREE_TYPE (base_var);
|
|
||||||
if (TREE_CODE (type) != INTEGER_TYPE)
|
if (TREE_CODE (type) != INTEGER_TYPE)
|
||||||
return false;
|
return false;
|
||||||
bit_sz = TYPE_PRECISION (type);
|
bit_sz = TYPE_PRECISION (type);
|
||||||
|
|
@ -448,7 +444,7 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
|
||||||
{
|
{
|
||||||
gimple base_def;
|
gimple base_def;
|
||||||
tree base_val0;
|
tree base_val0;
|
||||||
tree base_var, int_type;
|
tree int_type;
|
||||||
tree temp, tempn;
|
tree temp, tempn;
|
||||||
tree cst0;
|
tree cst0;
|
||||||
gimple stmt1, stmt2;
|
gimple stmt1, stmt2;
|
||||||
|
|
@ -457,8 +453,7 @@ gen_conditions_for_pow_int_base (tree base, tree expn,
|
||||||
|
|
||||||
base_def = SSA_NAME_DEF_STMT (base);
|
base_def = SSA_NAME_DEF_STMT (base);
|
||||||
base_val0 = gimple_assign_rhs1 (base_def);
|
base_val0 = gimple_assign_rhs1 (base_def);
|
||||||
base_var = SSA_NAME_VAR (base_val0);
|
int_type = TREE_TYPE (base_val0);
|
||||||
int_type = TREE_TYPE (base_var);
|
|
||||||
bit_sz = TYPE_PRECISION (int_type);
|
bit_sz = TYPE_PRECISION (int_type);
|
||||||
gcc_assert (bit_sz > 0
|
gcc_assert (bit_sz > 0
|
||||||
&& bit_sz <= MAX_BASE_INT_BIT_SIZE);
|
&& bit_sz <= MAX_BASE_INT_BIT_SIZE);
|
||||||
|
|
|
||||||
|
|
@ -1030,13 +1030,11 @@ insert_backedge_copies (void)
|
||||||
{
|
{
|
||||||
gimple phi = gsi_stmt (gsi);
|
gimple phi = gsi_stmt (gsi);
|
||||||
tree result = gimple_phi_result (phi);
|
tree result = gimple_phi_result (phi);
|
||||||
tree result_var;
|
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (!is_gimple_reg (result))
|
if (!is_gimple_reg (result))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
result_var = SSA_NAME_VAR (result);
|
|
||||||
for (i = 0; i < gimple_phi_num_args (phi); i++)
|
for (i = 0; i < gimple_phi_num_args (phi); i++)
|
||||||
{
|
{
|
||||||
tree arg = gimple_phi_arg_def (phi, i);
|
tree arg = gimple_phi_arg_def (phi, i);
|
||||||
|
|
@ -1048,7 +1046,7 @@ insert_backedge_copies (void)
|
||||||
needed. */
|
needed. */
|
||||||
if ((e->flags & EDGE_DFS_BACK)
|
if ((e->flags & EDGE_DFS_BACK)
|
||||||
&& (TREE_CODE (arg) != SSA_NAME
|
&& (TREE_CODE (arg) != SSA_NAME
|
||||||
|| SSA_NAME_VAR (arg) != result_var
|
|| SSA_NAME_VAR (arg) != SSA_NAME_VAR (result)
|
||||||
|| trivially_conflicts_p (bb, result, arg)))
|
|| trivially_conflicts_p (bb, result, arg)))
|
||||||
{
|
{
|
||||||
tree name;
|
tree name;
|
||||||
|
|
@ -1078,10 +1076,9 @@ insert_backedge_copies (void)
|
||||||
|
|
||||||
/* Create a new instance of the underlying variable of the
|
/* Create a new instance of the underlying variable of the
|
||||||
PHI result. */
|
PHI result. */
|
||||||
stmt = gimple_build_assign (result_var,
|
name = copy_ssa_name (result, NULL);
|
||||||
|
stmt = gimple_build_assign (name,
|
||||||
gimple_phi_arg_def (phi, i));
|
gimple_phi_arg_def (phi, i));
|
||||||
name = make_ssa_name (result_var, stmt);
|
|
||||||
gimple_assign_set_lhs (stmt, name);
|
|
||||||
|
|
||||||
/* copy location if present. */
|
/* copy location if present. */
|
||||||
if (gimple_phi_arg_has_location (phi, i))
|
if (gimple_phi_arg_has_location (phi, i))
|
||||||
|
|
|
||||||
|
|
@ -1008,9 +1008,7 @@ create_phi_for_local_result (void **slot, void *data)
|
||||||
e = EDGE_PRED (store_bb, 1);
|
e = EDGE_PRED (store_bb, 1);
|
||||||
else
|
else
|
||||||
e = EDGE_PRED (store_bb, 0);
|
e = EDGE_PRED (store_bb, 0);
|
||||||
local_res
|
local_res = copy_ssa_name (gimple_assign_lhs (reduc->reduc_stmt), NULL);
|
||||||
= make_ssa_name (SSA_NAME_VAR (gimple_assign_lhs (reduc->reduc_stmt)),
|
|
||||||
NULL);
|
|
||||||
locus = gimple_location (reduc->reduc_stmt);
|
locus = gimple_location (reduc->reduc_stmt);
|
||||||
new_phi = create_phi_node (local_res, store_bb);
|
new_phi = create_phi_node (local_res, store_bb);
|
||||||
add_phi_arg (new_phi, reduc->init, e, locus);
|
add_phi_arg (new_phi, reduc->init, e, locus);
|
||||||
|
|
|
||||||
|
|
@ -2687,18 +2687,13 @@ propagate_rhs_into_lhs (gimple stmt, tree lhs, tree rhs, bitmap interesting_name
|
||||||
/* Special cases to avoid useless calls into the folding
|
/* Special cases to avoid useless calls into the folding
|
||||||
routines, operand scanning, etc.
|
routines, operand scanning, etc.
|
||||||
|
|
||||||
First, propagation into a PHI may cause the PHI to become
|
Propagation into a PHI may cause the PHI to become
|
||||||
a degenerate, so mark the PHI as interesting. No other
|
a degenerate, so mark the PHI as interesting. No other
|
||||||
actions are necessary.
|
actions are necessary. */
|
||||||
|
if (gimple_code (use_stmt) == GIMPLE_PHI)
|
||||||
Second, if we're propagating a virtual operand and the
|
|
||||||
propagation does not change the underlying _DECL node for
|
|
||||||
the virtual operand, then no further actions are necessary. */
|
|
||||||
if (gimple_code (use_stmt) == GIMPLE_PHI
|
|
||||||
|| (! is_gimple_reg (lhs)
|
|
||||||
&& TREE_CODE (rhs) == SSA_NAME
|
|
||||||
&& SSA_NAME_VAR (lhs) == SSA_NAME_VAR (rhs)))
|
|
||||||
{
|
{
|
||||||
|
tree result;
|
||||||
|
|
||||||
/* Dump details. */
|
/* Dump details. */
|
||||||
if (dump_file && (dump_flags & TDF_DETAILS))
|
if (dump_file && (dump_flags & TDF_DETAILS))
|
||||||
{
|
{
|
||||||
|
|
@ -2706,14 +2701,8 @@ propagate_rhs_into_lhs (gimple stmt, tree lhs, tree rhs, bitmap interesting_name
|
||||||
print_gimple_stmt (dump_file, use_stmt, 0, dump_flags);
|
print_gimple_stmt (dump_file, use_stmt, 0, dump_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Propagation into a PHI may expose new degenerate PHIs,
|
result = get_lhs_or_phi_result (use_stmt);
|
||||||
so mark the result of the PHI as interesting. */
|
bitmap_set_bit (interesting_names, SSA_NAME_VERSION (result));
|
||||||
if (gimple_code (use_stmt) == GIMPLE_PHI)
|
|
||||||
{
|
|
||||||
tree result = get_lhs_or_phi_result (use_stmt);
|
|
||||||
bitmap_set_bit (interesting_names, SSA_NAME_VERSION (result));
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,17 +126,6 @@ static void get_expr_operands (gimple, tree *, int);
|
||||||
/* Number of functions with initialized ssa_operands. */
|
/* Number of functions with initialized ssa_operands. */
|
||||||
static int n_initialized = 0;
|
static int n_initialized = 0;
|
||||||
|
|
||||||
/* Return the DECL_UID of the base variable of T. */
|
|
||||||
|
|
||||||
static inline unsigned
|
|
||||||
get_name_decl (const_tree t)
|
|
||||||
{
|
|
||||||
if (TREE_CODE (t) != SSA_NAME)
|
|
||||||
return DECL_UID (t);
|
|
||||||
else
|
|
||||||
return DECL_UID (SSA_NAME_VAR (t));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Return true if the SSA operands cache is active. */
|
/* Return true if the SSA operands cache is active. */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -266,11 +266,15 @@ find_va_list_reference (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED,
|
||||||
tree var = *tp;
|
tree var = *tp;
|
||||||
|
|
||||||
if (TREE_CODE (var) == SSA_NAME)
|
if (TREE_CODE (var) == SSA_NAME)
|
||||||
var = SSA_NAME_VAR (var);
|
{
|
||||||
|
if (bitmap_bit_p (va_list_vars, SSA_NAME_VERSION (var)))
|
||||||
if (TREE_CODE (var) == VAR_DECL
|
return var;
|
||||||
&& bitmap_bit_p (va_list_vars, DECL_UID (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;
|
return NULL_TREE;
|
||||||
}
|
}
|
||||||
|
|
@ -347,12 +351,12 @@ va_list_counter_struct_op (struct stdarg_info *si, tree ap, tree var,
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (TREE_CODE (var) != SSA_NAME
|
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;
|
return false;
|
||||||
|
|
||||||
base = get_base_address (ap);
|
base = get_base_address (ap);
|
||||||
if (TREE_CODE (base) != VAR_DECL
|
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;
|
return false;
|
||||||
|
|
||||||
if (TREE_OPERAND (ap, 1) == va_list_gpr_counter_field)
|
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)
|
va_list_ptr_read (struct stdarg_info *si, tree ap, tree tem)
|
||||||
{
|
{
|
||||||
if (TREE_CODE (ap) != VAR_DECL
|
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;
|
return false;
|
||||||
|
|
||||||
if (TREE_CODE (tem) != SSA_NAME
|
if (TREE_CODE (tem) != SSA_NAME
|
||||||
|| bitmap_bit_p (si->va_list_vars,
|
|| bitmap_bit_p (si->va_list_vars, SSA_NAME_VERSION (tem)))
|
||||||
DECL_UID (SSA_NAME_VAR (tem)))
|
|
||||||
|| is_global_var (SSA_NAME_VAR (tem)))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (si->compute_sizes < 0)
|
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
|
/* Note the temporary, as we need to track whether it doesn't escape
|
||||||
the current function. */
|
the current function. */
|
||||||
bitmap_set_bit (si->va_list_escape_vars,
|
bitmap_set_bit (si->va_list_escape_vars, SSA_NAME_VERSION (tem));
|
||||||
DECL_UID (SSA_NAME_VAR (tem)));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -423,11 +425,11 @@ va_list_ptr_write (struct stdarg_info *si, tree ap, tree tem2)
|
||||||
unsigned HOST_WIDE_INT increment;
|
unsigned HOST_WIDE_INT increment;
|
||||||
|
|
||||||
if (TREE_CODE (ap) != VAR_DECL
|
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;
|
return false;
|
||||||
|
|
||||||
if (TREE_CODE (tem2) != SSA_NAME
|
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;
|
return false;
|
||||||
|
|
||||||
if (si->compute_sizes <= 0)
|
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 (TREE_CODE (rhs) == SSA_NAME)
|
||||||
{
|
{
|
||||||
if (! bitmap_bit_p (si->va_list_escape_vars,
|
if (! bitmap_bit_p (si->va_list_escape_vars, SSA_NAME_VERSION (rhs)))
|
||||||
DECL_UID (SSA_NAME_VAR (rhs))))
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (TREE_CODE (rhs) == ADDR_EXPR
|
else if (TREE_CODE (rhs) == ADDR_EXPR
|
||||||
&& TREE_CODE (TREE_OPERAND (rhs, 0)) == MEM_REF
|
&& TREE_CODE (TREE_OPERAND (rhs, 0)) == MEM_REF
|
||||||
&& TREE_CODE (TREE_OPERAND (TREE_OPERAND (rhs, 0), 0)) == SSA_NAME)
|
&& TREE_CODE (TREE_OPERAND (TREE_OPERAND (rhs, 0), 0)) == SSA_NAME)
|
||||||
{
|
{
|
||||||
if (! bitmap_bit_p (si->va_list_escape_vars,
|
tree ptr = TREE_OPERAND (TREE_OPERAND (rhs, 0), 0);
|
||||||
DECL_UID (SSA_NAME_VAR (TREE_OPERAND
|
if (! bitmap_bit_p (si->va_list_escape_vars, SSA_NAME_VERSION (ptr)))
|
||||||
(TREE_OPERAND (rhs, 0), 0)))))
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return;
|
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;
|
si->va_list_escapes = true;
|
||||||
return;
|
return;
|
||||||
|
|
@ -511,8 +511,7 @@ check_va_list_escapes (struct stdarg_info *si, tree lhs, tree rhs)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bitmap_set_bit (si->va_list_escape_vars,
|
bitmap_set_bit (si->va_list_escape_vars, SSA_NAME_VERSION (lhs));
|
||||||
DECL_UID (SSA_NAME_VAR (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)
|
FOR_EACH_SSA_TREE_OPERAND (use, stmt, iter, SSA_OP_ALL_USES)
|
||||||
{
|
{
|
||||||
if (! bitmap_bit_p (si->va_list_escape_vars,
|
if (! bitmap_bit_p (si->va_list_escape_vars,
|
||||||
DECL_UID (SSA_NAME_VAR (use))))
|
SSA_NAME_VERSION (use)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (is_gimple_assign (stmt))
|
if (is_gimple_assign (stmt))
|
||||||
|
|
@ -586,12 +585,12 @@ check_all_va_list_escapes (struct stdarg_info *si)
|
||||||
|
|
||||||
if (TREE_CODE (lhs) == SSA_NAME
|
if (TREE_CODE (lhs) == SSA_NAME
|
||||||
&& bitmap_bit_p (si->va_list_escape_vars,
|
&& bitmap_bit_p (si->va_list_escape_vars,
|
||||||
DECL_UID (SSA_NAME_VAR (lhs))))
|
SSA_NAME_VERSION (lhs)))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (TREE_CODE (lhs) == VAR_DECL
|
if (TREE_CODE (lhs) == VAR_DECL
|
||||||
&& bitmap_bit_p (si->va_list_vars,
|
&& bitmap_bit_p (si->va_list_vars,
|
||||||
DECL_UID (lhs)))
|
DECL_UID (lhs) + num_ssa_names))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if (rhs_code == ADDR_EXPR
|
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);
|
tree lhs = gimple_assign_lhs (stmt);
|
||||||
|
|
||||||
if (bitmap_bit_p (si->va_list_escape_vars,
|
if (bitmap_bit_p (si->va_list_escape_vars,
|
||||||
DECL_UID (SSA_NAME_VAR (lhs))))
|
SSA_NAME_VERSION (lhs)))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -722,7 +721,7 @@ execute_optimize_stdarg (void)
|
||||||
break;
|
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
|
/* VA_START_BB and VA_START_AP will be only used if there is just
|
||||||
one va_start in the function. */
|
one va_start in the function. */
|
||||||
|
|
|
||||||
|
|
@ -718,9 +718,9 @@ get_value_range (const_tree var)
|
||||||
|
|
||||||
/* If VAR is a default definition of a parameter, the variable can
|
/* If VAR is a default definition of a parameter, the variable can
|
||||||
take any value in VAR's type. */
|
take any value in VAR's type. */
|
||||||
sym = SSA_NAME_VAR (var);
|
|
||||||
if (SSA_NAME_IS_DEFAULT_DEF (var))
|
if (SSA_NAME_IS_DEFAULT_DEF (var))
|
||||||
{
|
{
|
||||||
|
sym = SSA_NAME_VAR (var);
|
||||||
if (TREE_CODE (sym) == PARM_DECL)
|
if (TREE_CODE (sym) == PARM_DECL)
|
||||||
{
|
{
|
||||||
/* Try to use the "nonnull" attribute to create ~[0, 0]
|
/* Try to use the "nonnull" attribute to create ~[0, 0]
|
||||||
|
|
|
||||||
|
|
@ -10155,9 +10155,6 @@ range_in_array_bounds_p (tree ref)
|
||||||
bool
|
bool
|
||||||
needs_to_live_in_memory (const_tree t)
|
needs_to_live_in_memory (const_tree t)
|
||||||
{
|
{
|
||||||
if (TREE_CODE (t) == SSA_NAME)
|
|
||||||
t = SSA_NAME_VAR (t);
|
|
||||||
|
|
||||||
return (TREE_ADDRESSABLE (t)
|
return (TREE_ADDRESSABLE (t)
|
||||||
|| is_global_var (t)
|
|| is_global_var (t)
|
||||||
|| (TREE_CODE (t) == RESULT_DECL
|
|| (TREE_CODE (t) == RESULT_DECL
|
||||||
|
|
|
||||||
|
|
@ -1276,10 +1276,10 @@ gimple_ic (gimple icall_stmt, struct cgraph_node *direct_call,
|
||||||
tree result = gimple_call_lhs (icall_stmt);
|
tree result = gimple_call_lhs (icall_stmt);
|
||||||
gimple phi = create_phi_node (result, join_bb);
|
gimple phi = create_phi_node (result, join_bb);
|
||||||
gimple_call_set_lhs (icall_stmt,
|
gimple_call_set_lhs (icall_stmt,
|
||||||
make_ssa_name (SSA_NAME_VAR (result), icall_stmt));
|
duplicate_ssa_name (result, icall_stmt));
|
||||||
add_phi_arg (phi, gimple_call_lhs (icall_stmt), e_ij, UNKNOWN_LOCATION);
|
add_phi_arg (phi, gimple_call_lhs (icall_stmt), e_ij, UNKNOWN_LOCATION);
|
||||||
gimple_call_set_lhs (dcall_stmt,
|
gimple_call_set_lhs (dcall_stmt,
|
||||||
make_ssa_name (SSA_NAME_VAR (result), dcall_stmt));
|
duplicate_ssa_name (result, dcall_stmt));
|
||||||
add_phi_arg (phi, gimple_call_lhs (dcall_stmt), e_dj, UNKNOWN_LOCATION);
|
add_phi_arg (phi, gimple_call_lhs (dcall_stmt), e_dj, UNKNOWN_LOCATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1507,10 +1507,10 @@ gimple_stringop_fixed_value (gimple vcall_stmt, tree icall_size, int prob,
|
||||||
tree result = gimple_call_lhs (vcall_stmt);
|
tree result = gimple_call_lhs (vcall_stmt);
|
||||||
gimple phi = create_phi_node (result, join_bb);
|
gimple phi = create_phi_node (result, join_bb);
|
||||||
gimple_call_set_lhs (vcall_stmt,
|
gimple_call_set_lhs (vcall_stmt,
|
||||||
make_ssa_name (SSA_NAME_VAR (result), vcall_stmt));
|
duplicate_ssa_name (result, vcall_stmt));
|
||||||
add_phi_arg (phi, gimple_call_lhs (vcall_stmt), e_vj, UNKNOWN_LOCATION);
|
add_phi_arg (phi, gimple_call_lhs (vcall_stmt), e_vj, UNKNOWN_LOCATION);
|
||||||
gimple_call_set_lhs (icall_stmt,
|
gimple_call_set_lhs (icall_stmt,
|
||||||
make_ssa_name (SSA_NAME_VAR (result), icall_stmt));
|
duplicate_ssa_name (result, icall_stmt));
|
||||||
add_phi_arg (phi, gimple_call_lhs (icall_stmt), e_ij, UNKNOWN_LOCATION);
|
add_phi_arg (phi, gimple_call_lhs (icall_stmt), e_ij, UNKNOWN_LOCATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue