From 23a534a102ad0310ca6ccb35717bb54e102ffb3e Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Wed, 1 Sep 2010 13:28:46 +0000 Subject: alias.c (ao_ref_from_mem): Adjust. 2010-09-01 Richard Guenther * alias.c (ao_ref_from_mem): Adjust. * builtins.c (get_object_alignment): Likewise. * cfgexpand.c (expand_debug_expr): Likewise. * gimple.c (get_base_address): Likewise. * tree-dfa.c (get_ref_base_and_extent): Likewise. (get_addr_base_and_unit_offset): Likewise. Fix for both TMR_SYMBOL and TMR_BASE being set. * tree-eh.c (tree_could_trap_p): Likewise. * gimplify.c (gimplify_expr): Do not attempt to gimplify TMR_SYMBOL. Always gimplify TMR_BASE. * tree-cfg.c (verify_types_in_gimple_reference): Verify TMR_BASE if there is a TMR_SYMBOL. * tree-pretty-print.c (dump_generic_node): Adjust. * tree-ssa-address.c (addr_for_mem_ref): Likewise. (tree_mem_ref_addr): Likewise. (create_mem_ref_raw): Likewise. (move_fixed_address_to_symbol): Likewise. (create_mem_ref): Likewise. (dump_mem_address): Likewise. * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Adjust. Fix for both TMR_SYMBOL and TMR_BASE being set. (indirect_refs_may_alias_p): Likewise. * tree-ssa-operands.c (get_tmr_operands): Adjust. * tree.def (TARGET_MEM_REF): Adjust documentation. From-SVN: r163733 --- gcc/tree-dfa.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'gcc/tree-dfa.c') diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 10fd41e5e0f..c60e107f7b1 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -882,16 +882,17 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset, /* Hand back the decl for MEM[&decl, off]. */ if (TMR_SYMBOL (exp)) { - /* Via the variable index we can reach the whole object. */ - if (TMR_INDEX (exp)) + /* Via the variable index or base we can reach the + whole object. */ + if (TMR_INDEX (exp) || TMR_BASE (exp)) { - exp = TMR_SYMBOL (exp); + exp = TREE_OPERAND (TMR_SYMBOL (exp), 0); bit_offset = 0; maxsize = -1; goto done; } if (integer_zerop (TMR_OFFSET (exp))) - exp = TMR_SYMBOL (exp); + exp = TREE_OPERAND (TMR_SYMBOL (exp), 0); else { double_int off = mem_ref_offset (exp); @@ -903,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 = TMR_SYMBOL (exp); + exp = TREE_OPERAND (TMR_SYMBOL (exp), 0); } } } @@ -1045,7 +1046,7 @@ get_addr_base_and_unit_offset (tree exp, HOST_WIDE_INT *poffset) /* Hand back the decl for MEM[&decl, off]. */ if (TMR_SYMBOL (exp)) { - if (TMR_SYMBOL (exp)) + if (TMR_INDEX (exp) || TMR_BASE (exp)) return NULL_TREE; if (!integer_zerop (TMR_OFFSET (exp))) { @@ -1053,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 = TMR_SYMBOL (exp); + exp = TREE_OPERAND (TMR_SYMBOL (exp), 0); } goto done; -- cgit v1.2.1