gimple.h (gimple_store_p): New predicate.
2012-10-30 Richard Biener <rguenther@suse.de> * gimple.h (gimple_store_p): New predicate. (gimple_assign_load_p): Likewise. * tree-inline.c (estimate_num_insns): Use it. * gcc.dg/vect/slp-perm-2.c: Adjust. From-SVN: r192987
This commit is contained in:
parent
2e2e628b24
commit
c12d924229
5 changed files with 42 additions and 6 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-10-30 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gimple.h (gimple_store_p): New predicate.
|
||||
(gimple_assign_load_p): Likewise.
|
||||
* tree-inline.c (estimate_num_insns): Use it.
|
||||
|
||||
2012-10-30 Marc Glisse <marc.glisse@inria.fr>
|
||||
|
||||
* fold-const.c (fold_binary_op_with_conditional_arg): Handle vectors.
|
||||
|
|
25
gcc/gimple.h
25
gcc/gimple.h
|
@ -2041,6 +2041,31 @@ gimple_assign_single_p (gimple gs)
|
|||
&& gimple_assign_rhs_class (gs) == GIMPLE_SINGLE_RHS);
|
||||
}
|
||||
|
||||
/* Return true if GS performs a store to its lhs. */
|
||||
|
||||
static inline bool
|
||||
gimple_store_p (gimple gs)
|
||||
{
|
||||
tree lhs = gimple_get_lhs (gs);
|
||||
return lhs && !is_gimple_reg (lhs);
|
||||
}
|
||||
|
||||
/* Return true if GS is an assignment that loads from its rhs1. */
|
||||
|
||||
static inline bool
|
||||
gimple_assign_load_p (gimple gs)
|
||||
{
|
||||
tree rhs;
|
||||
if (!gimple_assign_single_p (gs))
|
||||
return false;
|
||||
rhs = gimple_assign_rhs1 (gs);
|
||||
if (TREE_CODE (rhs) == WITH_SIZE_EXPR)
|
||||
return true;
|
||||
rhs = get_base_address (rhs);
|
||||
return (DECL_P (rhs)
|
||||
|| TREE_CODE (rhs) == MEM_REF || TREE_CODE (rhs) == TARGET_MEM_REF);
|
||||
}
|
||||
|
||||
|
||||
/* Return true if S is a type-cast assignment. */
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2012-10-30 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gcc.dg/vect/slp-perm-2.c: Adjust.
|
||||
|
||||
2012-10-30 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/55111
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
|
||||
#define N 16
|
||||
|
||||
void foo (unsigned int *__restrict__ pInput, unsigned int *__restrict__ pOutput)
|
||||
void __attribute__((noinline))
|
||||
foo (unsigned int *__restrict__ pInput, unsigned int *__restrict__ pOutput)
|
||||
{
|
||||
unsigned int i, a, b;
|
||||
|
||||
|
|
|
@ -3512,12 +3512,12 @@ estimate_num_insns (gimple stmt, eni_weights *weights)
|
|||
lhs = gimple_assign_lhs (stmt);
|
||||
rhs = gimple_assign_rhs1 (stmt);
|
||||
|
||||
if (is_gimple_reg (lhs))
|
||||
cost = 0;
|
||||
else
|
||||
cost = estimate_move_cost (TREE_TYPE (lhs));
|
||||
cost = 0;
|
||||
|
||||
if (!is_gimple_reg (rhs) && !is_gimple_min_invariant (rhs))
|
||||
/* Account for the cost of moving to / from memory. */
|
||||
if (gimple_store_p (stmt))
|
||||
cost += estimate_move_cost (TREE_TYPE (lhs));
|
||||
if (gimple_assign_load_p (stmt))
|
||||
cost += estimate_move_cost (TREE_TYPE (rhs));
|
||||
|
||||
cost += estimate_operator_cost (gimple_assign_rhs_code (stmt), weights,
|
||||
|
|
Loading…
Add table
Reference in a new issue