gimple-fold.h (gimple_build): Remove optional valueize arguments.
2015-04-20 Richard Biener <rguenther@suse.de> * gimple-fold.h (gimple_build): Remove optional valueize arguments. * gimple-fold.c (gimple_build_valueize): New function. (gimple_build): Always use gimple_build_valueize as valueize hook. From-SVN: r222231
This commit is contained in:
parent
9adc2d48ac
commit
c26de36ddc
|
@ -1,3 +1,9 @@
|
|||
2015-04-20 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gimple-fold.h (gimple_build): Remove optional valueize arguments.
|
||||
* gimple-fold.c (gimple_build_valueize): New function.
|
||||
(gimple_build): Always use gimple_build_valueize as valueize hook.
|
||||
|
||||
2015-04-20 Alan Lawrence <alan.lawrence@arm.com>
|
||||
|
||||
PR target/64134
|
||||
|
|
|
@ -6078,18 +6078,28 @@ rewrite_to_defined_overflow (gimple stmt)
|
|||
}
|
||||
|
||||
|
||||
/* The valueization hook we use for the gimple_build API simplification.
|
||||
This makes us match fold_buildN behavior by only combining with
|
||||
statements in the sequence(s) we are currently building. */
|
||||
|
||||
static tree
|
||||
gimple_build_valueize (tree op)
|
||||
{
|
||||
if (gimple_bb (SSA_NAME_DEF_STMT (op)) == NULL)
|
||||
return op;
|
||||
return NULL_TREE;
|
||||
}
|
||||
|
||||
/* Build the expression CODE OP0 of type TYPE with location LOC,
|
||||
simplifying it first if possible using VALUEIZE if not NULL.
|
||||
OP0 is expected to be valueized already. Returns the built
|
||||
simplifying it first if possible. Returns the built
|
||||
expression value and appends statements possibly defining it
|
||||
to SEQ. */
|
||||
|
||||
tree
|
||||
gimple_build (gimple_seq *seq, location_t loc,
|
||||
enum tree_code code, tree type, tree op0,
|
||||
tree (*valueize)(tree))
|
||||
enum tree_code code, tree type, tree op0)
|
||||
{
|
||||
tree res = gimple_simplify (code, type, op0, seq, valueize);
|
||||
tree res = gimple_simplify (code, type, op0, seq, gimple_build_valueize);
|
||||
if (!res)
|
||||
{
|
||||
if (gimple_in_ssa_p (cfun))
|
||||
|
@ -6110,17 +6120,15 @@ gimple_build (gimple_seq *seq, location_t loc,
|
|||
}
|
||||
|
||||
/* Build the expression OP0 CODE OP1 of type TYPE with location LOC,
|
||||
simplifying it first if possible using VALUEIZE if not NULL.
|
||||
OP0 and OP1 are expected to be valueized already. Returns the built
|
||||
simplifying it first if possible. Returns the built
|
||||
expression value and appends statements possibly defining it
|
||||
to SEQ. */
|
||||
|
||||
tree
|
||||
gimple_build (gimple_seq *seq, location_t loc,
|
||||
enum tree_code code, tree type, tree op0, tree op1,
|
||||
tree (*valueize)(tree))
|
||||
enum tree_code code, tree type, tree op0, tree op1)
|
||||
{
|
||||
tree res = gimple_simplify (code, type, op0, op1, seq, valueize);
|
||||
tree res = gimple_simplify (code, type, op0, op1, seq, gimple_build_valueize);
|
||||
if (!res)
|
||||
{
|
||||
if (gimple_in_ssa_p (cfun))
|
||||
|
@ -6135,18 +6143,16 @@ gimple_build (gimple_seq *seq, location_t loc,
|
|||
}
|
||||
|
||||
/* Build the expression (CODE OP0 OP1 OP2) of type TYPE with location LOC,
|
||||
simplifying it first if possible using VALUEIZE if not NULL.
|
||||
OP0, OP1 and OP2 are expected to be valueized already. Returns the built
|
||||
simplifying it first if possible. Returns the built
|
||||
expression value and appends statements possibly defining it
|
||||
to SEQ. */
|
||||
|
||||
tree
|
||||
gimple_build (gimple_seq *seq, location_t loc,
|
||||
enum tree_code code, tree type, tree op0, tree op1, tree op2,
|
||||
tree (*valueize)(tree))
|
||||
enum tree_code code, tree type, tree op0, tree op1, tree op2)
|
||||
{
|
||||
tree res = gimple_simplify (code, type, op0, op1, op2,
|
||||
seq, valueize);
|
||||
seq, gimple_build_valueize);
|
||||
if (!res)
|
||||
{
|
||||
if (gimple_in_ssa_p (cfun))
|
||||
|
@ -6167,17 +6173,15 @@ gimple_build (gimple_seq *seq, location_t loc,
|
|||
|
||||
/* Build the call FN (ARG0) with a result of type TYPE
|
||||
(or no result if TYPE is void) with location LOC,
|
||||
simplifying it first if possible using VALUEIZE if not NULL.
|
||||
ARG0 is expected to be valueized already. Returns the built
|
||||
simplifying it first if possible. Returns the built
|
||||
expression value (or NULL_TREE if TYPE is void) and appends
|
||||
statements possibly defining it to SEQ. */
|
||||
|
||||
tree
|
||||
gimple_build (gimple_seq *seq, location_t loc,
|
||||
enum built_in_function fn, tree type, tree arg0,
|
||||
tree (*valueize)(tree))
|
||||
enum built_in_function fn, tree type, tree arg0)
|
||||
{
|
||||
tree res = gimple_simplify (fn, type, arg0, seq, valueize);
|
||||
tree res = gimple_simplify (fn, type, arg0, seq, gimple_build_valueize);
|
||||
if (!res)
|
||||
{
|
||||
tree decl = builtin_decl_implicit (fn);
|
||||
|
@ -6198,17 +6202,15 @@ gimple_build (gimple_seq *seq, location_t loc,
|
|||
|
||||
/* Build the call FN (ARG0, ARG1) with a result of type TYPE
|
||||
(or no result if TYPE is void) with location LOC,
|
||||
simplifying it first if possible using VALUEIZE if not NULL.
|
||||
ARG0 is expected to be valueized already. Returns the built
|
||||
simplifying it first if possible. Returns the built
|
||||
expression value (or NULL_TREE if TYPE is void) and appends
|
||||
statements possibly defining it to SEQ. */
|
||||
|
||||
tree
|
||||
gimple_build (gimple_seq *seq, location_t loc,
|
||||
enum built_in_function fn, tree type, tree arg0, tree arg1,
|
||||
tree (*valueize)(tree))
|
||||
enum built_in_function fn, tree type, tree arg0, tree arg1)
|
||||
{
|
||||
tree res = gimple_simplify (fn, type, arg0, arg1, seq, valueize);
|
||||
tree res = gimple_simplify (fn, type, arg0, arg1, seq, gimple_build_valueize);
|
||||
if (!res)
|
||||
{
|
||||
tree decl = builtin_decl_implicit (fn);
|
||||
|
@ -6229,18 +6231,17 @@ gimple_build (gimple_seq *seq, location_t loc,
|
|||
|
||||
/* Build the call FN (ARG0, ARG1, ARG2) with a result of type TYPE
|
||||
(or no result if TYPE is void) with location LOC,
|
||||
simplifying it first if possible using VALUEIZE if not NULL.
|
||||
ARG0 is expected to be valueized already. Returns the built
|
||||
simplifying it first if possible. Returns the built
|
||||
expression value (or NULL_TREE if TYPE is void) and appends
|
||||
statements possibly defining it to SEQ. */
|
||||
|
||||
tree
|
||||
gimple_build (gimple_seq *seq, location_t loc,
|
||||
enum built_in_function fn, tree type,
|
||||
tree arg0, tree arg1, tree arg2,
|
||||
tree (*valueize)(tree))
|
||||
tree arg0, tree arg1, tree arg2)
|
||||
{
|
||||
tree res = gimple_simplify (fn, type, arg0, arg1, arg2, seq, valueize);
|
||||
tree res = gimple_simplify (fn, type, arg0, arg1, arg2,
|
||||
seq, gimple_build_valueize);
|
||||
if (!res)
|
||||
{
|
||||
tree decl = builtin_decl_implicit (fn);
|
||||
|
|
|
@ -57,8 +57,7 @@ extern gimple_seq rewrite_to_defined_overflow (gimple);
|
|||
int the provided sequence, matching and simplifying them on-the-fly.
|
||||
Supposed to replace force_gimple_operand (fold_buildN (...), ...). */
|
||||
extern tree gimple_build (gimple_seq *, location_t,
|
||||
enum tree_code, tree, tree,
|
||||
tree (*valueize) (tree) = NULL);
|
||||
enum tree_code, tree, tree);
|
||||
inline tree
|
||||
gimple_build (gimple_seq *seq,
|
||||
enum tree_code code, tree type, tree op0)
|
||||
|
@ -66,8 +65,7 @@ gimple_build (gimple_seq *seq,
|
|||
return gimple_build (seq, UNKNOWN_LOCATION, code, type, op0);
|
||||
}
|
||||
extern tree gimple_build (gimple_seq *, location_t,
|
||||
enum tree_code, tree, tree, tree,
|
||||
tree (*valueize) (tree) = NULL);
|
||||
enum tree_code, tree, tree, tree);
|
||||
inline tree
|
||||
gimple_build (gimple_seq *seq,
|
||||
enum tree_code code, tree type, tree op0, tree op1)
|
||||
|
@ -75,8 +73,7 @@ gimple_build (gimple_seq *seq,
|
|||
return gimple_build (seq, UNKNOWN_LOCATION, code, type, op0, op1);
|
||||
}
|
||||
extern tree gimple_build (gimple_seq *, location_t,
|
||||
enum tree_code, tree, tree, tree, tree,
|
||||
tree (*valueize) (tree) = NULL);
|
||||
enum tree_code, tree, tree, tree, tree);
|
||||
inline tree
|
||||
gimple_build (gimple_seq *seq,
|
||||
enum tree_code code, tree type, tree op0, tree op1, tree op2)
|
||||
|
@ -84,8 +81,7 @@ gimple_build (gimple_seq *seq,
|
|||
return gimple_build (seq, UNKNOWN_LOCATION, code, type, op0, op1, op2);
|
||||
}
|
||||
extern tree gimple_build (gimple_seq *, location_t,
|
||||
enum built_in_function, tree, tree,
|
||||
tree (*valueize) (tree) = NULL);
|
||||
enum built_in_function, tree, tree);
|
||||
inline tree
|
||||
gimple_build (gimple_seq *seq,
|
||||
enum built_in_function fn, tree type, tree arg0)
|
||||
|
@ -93,8 +89,7 @@ gimple_build (gimple_seq *seq,
|
|||
return gimple_build (seq, UNKNOWN_LOCATION, fn, type, arg0);
|
||||
}
|
||||
extern tree gimple_build (gimple_seq *, location_t,
|
||||
enum built_in_function, tree, tree, tree,
|
||||
tree (*valueize) (tree) = NULL);
|
||||
enum built_in_function, tree, tree, tree);
|
||||
inline tree
|
||||
gimple_build (gimple_seq *seq,
|
||||
enum built_in_function fn, tree type, tree arg0, tree arg1)
|
||||
|
@ -102,8 +97,7 @@ gimple_build (gimple_seq *seq,
|
|||
return gimple_build (seq, UNKNOWN_LOCATION, fn, type, arg0, arg1);
|
||||
}
|
||||
extern tree gimple_build (gimple_seq *, location_t,
|
||||
enum built_in_function, tree, tree, tree, tree,
|
||||
tree (*valueize) (tree) = NULL);
|
||||
enum built_in_function, tree, tree, tree, tree);
|
||||
inline tree
|
||||
gimple_build (gimple_seq *seq,
|
||||
enum built_in_function fn, tree type,
|
||||
|
|
Loading…
Reference in New Issue