Commit ba199a53 by Kazu Hirata Committed by Kazu Hirata

fold-const.c (fold_build1, [...]): New.

	* fold-const.c (fold_build1, fold_build2, fold_build3): New.
	* tree.h: Add corresponding prototypes.

From-SVN: r96881
parent 7cf57259
......@@ -4,6 +4,9 @@
CALL_EXPR.
(fold): Update a call to fold_ternary.
* fold-const.c (fold_build1, fold_build2, fold_build3): New.
* tree.h: Add corresponding prototypes.
2005-03-22 Jakub Jelinek <jakub@redhat.com>
PR target/20561
......
......@@ -10168,6 +10168,51 @@ fold_checksum_tree (tree expr, struct md5_ctx *ctx, htab_t ht)
#endif
/* Fold a unary tree expression with code CODE of type TYPE with an
operand OP0. Return a folded expresion if successful. Otherwise,
return a tree expression with code CODE of type TYPE with an
operand OP0. */
tree
fold_build1 (enum tree_code code, tree type, tree op0)
{
tree tem = fold_unary (code, type, op0);
if (tem)
return tem;
return build1 (code, type, op0);
}
/* Fold a binary tree expression with code CODE of type TYPE with
operands OP0 and OP1. Return a folded expresion if successful.
Otherwise, return a tree expression with code CODE of type TYPE
with operands OP0 and OP1. */
tree
fold_build2 (enum tree_code code, tree type, tree op0, tree op1)
{
tree tem = fold_binary (code, type, op0, op1);
if (tem)
return tem;
return build2 (code, type, op0, op1);
}
/* Fold a ternary tree expression with code CODE of type TYPE with
operands OP0, OP1, and OP2. Return a folded expresion if
successful. Otherwise, return a tree expression with code CODE of
type TYPE with operands OP0, OP1, and OP2. */
tree
fold_build3 (enum tree_code code, tree type, tree op0, tree op1, tree op2)
{
tree tem = fold_ternary (code, type, op0, op1, op2);
if (tem)
return tem;
return build3 (code, type, op0, op1, op2);
}
/* Perform constant folding and related simplification of initializer
expression EXPR. This behaves identically to "fold" but ignores
potential run-time traps and exceptions that fold must preserve. */
......
......@@ -3495,6 +3495,9 @@ extern void using_eh_for_cleanups (void);
subexpressions are not changed. */
extern tree fold (tree);
extern tree fold_build1 (enum tree_code, tree, tree);
extern tree fold_build2 (enum tree_code, tree, tree, tree);
extern tree fold_build3 (enum tree_code, tree, tree, tree, tree);
extern tree fold_initializer (tree);
extern tree fold_convert (tree, tree);
extern tree fold_single_bit_test (enum tree_code, tree, tree, tree);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment