This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] [RFC, GCC 4.8] Optimize conditional moves from adjacent memory locations


On Mon, 13 Feb 2012, Richard Guenther wrote:

> Indeed.  But note that the transform is not valid as *this_node may cross
> a page boundary and thus either pointer load may trap if the other does not
> (well, unless the C standard (and thus our middle-end) would require that
> iff ptr->component does not trap that *ptr does not trap either - we would
> require a operand_equal_p (get_base_address ()) for both addresses).
> 
> Joseph, can you clarify what the C standard specifies here?

The question of what the relevant objects for an access are isn't 
well-defined in general, but it seems doubtful that accessing via a 
structure type is valid if the whole structure isn't in accessible memory.  
(Whereas you can't speculatively load from x[1] just because x[0] was 
accessed - x might point to an array of size 1.  And of course this 
applies with flexible array members - access to any bit of the structure 
means the part before the flexible array member is available, but the 
flexible array member may not extend beyond the part accessed.)

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]