aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-dfa.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-09-03 09:50:17 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-09-03 09:50:17 +0000
commit4d948885d0d10918e53b9d91fde81c4f47d837a8 (patch)
tree906679b413fe977c9a6b6281ce7ba070a3cf8a52 /gcc/tree-dfa.c
parentb3ec52d088106728c7c8acda2e736e09b6e70b4f (diff)
downloadgcc-4d948885d0d10918e53b9d91fde81c4f47d837a8.zip
gcc-4d948885d0d10918e53b9d91fde81c4f47d837a8.tar.gz
gcc-4d948885d0d10918e53b9d91fde81c4f47d837a8.tar.bz2
tree.def (TARGET_MEM_REF): Merge TMR_SYMBOL and TMR_BASE.
2010-09-03 Richard Guenther <rguenther@suse.de> * tree.def (TARGET_MEM_REF): Merge TMR_SYMBOL and TMR_BASE. Move TMR_OFFSET to second operand. Add TMR_INDEX2. * tree.h (TMR_SYMBOL): Remove. (TMR_BASE, TMR_OFFSET): Adjust. (TMR_INDEX2): New. * alias.c (ao_ref_from_mem): Use TMR_BASE. * builtins.c (get_object_alignment): Merge TMR_BASE and TMR_SYMBOL handling. * cfgexpand.c (expand_debug_expr): Use TMR_BASE. * gimple.c (get_base_address): Merge MEM_REF and TARGET_MEM_REF handling. Also allow TARGET_MEM_REF as base address. (walk_stmt_load_store_addr_ops): TMR_BASE is always non-NULL. * gimplify.c (gimplify_expr): Gimplify TMR_BASE like MEM_REF base. Gimplify TMR_INDEX2. * tree-cfg.c (verify_types_in_gimple_reference): Adjust. * tree-dfa.c (get_ref_base_and_extent): Likewise. (get_addr_base_and_unit_offset): Likewise. * tree-eh.c (tree_could_trap_p): Likewise. * tree-pretty-print.c (dump_generic_node): Likewise. * tree-ssa-address.c (tree_mem_ref_addr): Simplify. Handle TMR_INDEX2. (create_mem_ref_raw): Merge symbol and base. Move 2ndary base to index2. (get_address_description): Reconstruct addres description from merged TMR_BASE and TMR_INDEX2. (maybe_fold_tmr): Fold propagated addresses. * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Merge MEM_REF and TARGET_MEM_REF paths. (indirect_refs_may_alias_p): Likewise. * tree-ssa-live.c (mark_all_vars_used_1): Handle TMR_INDEX2 instead of TMR_SYMBOL. * tree-ssa-operands.c (get_tmr_operands): Simplify. * tree-ssa-pre.c (create_component_ref_by_pieces_1): Adjust according to changes ... * tree-ssa-sccvn.c (copy_reference_ops_from_ref): ... here. Split TARGET_MEM_REF into two fields plus the base. * tree.c (mem_ref_offset): Simplify. * tree-ssa-loop-im.c (for_each_index): Handle TMR_INDEX2. * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Likewise. Strip NOPs when folding MEM_REF addresses. * tree-ssa-sink.c (is_hidden_global_store): Handle TARGET_MEM_REF. * gimple-fold.c (maybe_fold_reference): Fold TARGET_MEM_REF here ... (fold_gimple_assign): ... not here. From-SVN: r163802
Diffstat (limited to 'gcc/tree-dfa.c')
-rw-r--r--gcc/tree-dfa.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index c60e107..0bc9f41 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -880,19 +880,19 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
case TARGET_MEM_REF:
/* Hand back the decl for MEM[&decl, off]. */
- if (TMR_SYMBOL (exp))
+ if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR)
{
- /* Via the variable index or base we can reach the
+ /* Via the variable index or index2 we can reach the
whole object. */
- if (TMR_INDEX (exp) || TMR_BASE (exp))
+ if (TMR_INDEX (exp) || TMR_INDEX2 (exp))
{
- exp = TREE_OPERAND (TMR_SYMBOL (exp), 0);
+ exp = TREE_OPERAND (TMR_BASE (exp), 0);
bit_offset = 0;
maxsize = -1;
goto done;
}
if (integer_zerop (TMR_OFFSET (exp)))
- exp = TREE_OPERAND (TMR_SYMBOL (exp), 0);
+ exp = TREE_OPERAND (TMR_BASE (exp), 0);
else
{
double_int off = mem_ref_offset (exp);
@@ -904,7 +904,7 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
if (double_int_fits_in_shwi_p (off))
{
bit_offset = double_int_to_shwi (off);
- exp = TREE_OPERAND (TMR_SYMBOL (exp), 0);
+ exp = TREE_OPERAND (TMR_BASE (exp), 0);
}
}
}
@@ -1044,9 +1044,9 @@ get_addr_base_and_unit_offset (tree exp, HOST_WIDE_INT *poffset)
case TARGET_MEM_REF:
/* Hand back the decl for MEM[&decl, off]. */
- if (TMR_SYMBOL (exp))
+ if (TREE_CODE (TMR_BASE (exp)) == ADDR_EXPR)
{
- if (TMR_INDEX (exp) || TMR_BASE (exp))
+ if (TMR_INDEX (exp) || TMR_INDEX2 (exp))
return NULL_TREE;
if (!integer_zerop (TMR_OFFSET (exp)))
{
@@ -1054,7 +1054,7 @@ get_addr_base_and_unit_offset (tree exp, HOST_WIDE_INT *poffset)
gcc_assert (off.high == -1 || off.high == 0);
byte_offset += double_int_to_shwi (off);
}
- exp = TREE_OPERAND (TMR_SYMBOL (exp), 0);
+ exp = TREE_OPERAND (TMR_BASE (exp), 0);
}
goto done;