On Tue, Nov 5, 2013 at 7:19 PM, Yufeng Zhang <yufeng.zh...@arm.com> wrote: > On 11/05/13 10:13, bin.cheng wrote: >> >> Index: gcc/tree-affine.c >> =================================================================== >> --- gcc/tree-affine.c (revision 204117) >> +++ gcc/tree-affine.c (working copy) >> @@ -874,10 +874,11 @@ debug_aff (aff_tree *val) >> fprintf (stderr, "\n"); >> } >> >> -/* Returns address of the reference REF in ADDR. The size of the >> accessed >> - location is stored to SIZE. */ >> +/* Computes address of the reference REF in ADDR. The size of the >> accessed >> + location is stored to SIZE. Returns pointer to the ultimate >> containing >> + object to which REF refers. */ >> >> -void >> +tree >> get_inner_reference_aff (tree ref, aff_tree *addr, double_int *size) >> { >> HOST_WIDE_INT bitsize, bitpos; >> @@ -904,6 +905,8 @@ get_inner_reference_aff (tree ref, aff_tree *addr, >> aff_combination_add (addr,&tmp); >> >> *size = double_int::from_shwi ((bitsize + BITS_PER_UNIT - 1) / >> BITS_PER_UNIT); >> + >> + return base_addr; >> } >> > > I think what Richard suggests is to return the base object rather the > address of the base object, i.e. I am not sure about that. We have to pass pointer_type expression to function determine_base_object for address expressions, because there is no way to tell pointer from object once we are in determine_base_object. Thanks. bin > > return base; > > This is good in keeping the consistency in the return values between > get_inner_reference_aff and get_inner_reference. > > Yufeng >
-- Best Regards.