tree.h (fold_indirect_ref_1): Export from fold-const.c.
2005-06-01 Richard Guenther <rguenth@gcc.gnu.org> * tree.h (fold_indirect_ref_1): Export from fold-const.c. * fold-const.c (fold_indirect_ref_1): No longer static. * tree-inline.c (copy_body_r): Use fold_indirect_ref_1 for folding, if possible. From-SVN: r100458
This commit is contained in:
parent
82c0180d77
commit
095ecc24ec
@ -1,3 +1,10 @@
|
||||
2005-06-01 Richard Guenther <rguenth@gcc.gnu.org>
|
||||
|
||||
* tree.h (fold_indirect_ref_1): Export from fold-const.c.
|
||||
* fold-const.c (fold_indirect_ref_1): No longer static.
|
||||
* tree-inline.c (copy_body_r): Use fold_indirect_ref_1 for
|
||||
folding, if possible.
|
||||
|
||||
2005-06-01 Joseph S. Myers <joseph@codesourcery.com>
|
||||
|
||||
* common.opt (fjump-tables): New.
|
||||
|
@ -11508,7 +11508,7 @@ build_fold_addr_expr (tree t)
|
||||
of an indirection through OP0, or NULL_TREE if no simplification is
|
||||
possible. */
|
||||
|
||||
static tree
|
||||
tree
|
||||
fold_indirect_ref_1 (tree type, tree op0)
|
||||
{
|
||||
tree sub = op0;
|
||||
|
@ -615,13 +615,17 @@ copy_body_r (tree *tp, int *walk_subtrees, void *data)
|
||||
it manually here as we'll eventually get ADDR_EXPRs
|
||||
which lie about their types pointed to. In this case
|
||||
build_fold_indirect_ref wouldn't strip the INDIRECT_REF,
|
||||
but we absolutely rely on that. */
|
||||
if (TREE_CODE ((tree)n->value) == ADDR_EXPR)
|
||||
*tp = TREE_OPERAND ((tree)n->value, 0);
|
||||
else
|
||||
*tp = build1 (INDIRECT_REF,
|
||||
TREE_TYPE (TREE_TYPE ((tree)n->value)),
|
||||
(tree)n->value);
|
||||
but we absolutely rely on that. As fold_indirect_ref
|
||||
does other useful transformations, try that first, though. */
|
||||
tree type = TREE_TYPE (TREE_TYPE ((tree)n->value));
|
||||
*tp = fold_indirect_ref_1 (type, (tree)n->value);
|
||||
if (! *tp)
|
||||
{
|
||||
if (TREE_CODE ((tree)n->value) == ADDR_EXPR)
|
||||
*tp = TREE_OPERAND ((tree)n->value, 0);
|
||||
else
|
||||
*tp = build1 (INDIRECT_REF, type, (tree)n->value);
|
||||
}
|
||||
*walk_subtrees = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -3539,6 +3539,7 @@ extern tree fold_convert (tree, tree);
|
||||
extern tree fold_single_bit_test (enum tree_code, tree, tree, tree);
|
||||
extern tree fold_ignored_result (tree);
|
||||
extern tree fold_abs_const (tree, tree);
|
||||
extern tree fold_indirect_ref_1 (tree, tree);
|
||||
|
||||
extern tree force_fit_type (tree, int, bool, bool);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user