No TBAA before ptr_derefs_may_alias_p?

Richard Biener rguenther@suse.de
Mon Feb 3 10:19:00 GMT 2014


On Mon, 3 Feb 2014, Florian Weimer wrote:

> On 02/03/2014 10:59 AM, Jakub Jelinek wrote:
> > On Mon, Feb 03, 2014 at 09:51:01AM +0000, Bingfeng Mei wrote:
> > > If it is just for C++ placement new, why don't implement it as a
> > > lang_hook.
> > > Now other languages such as C have to be made conservative and produce
> > > worse
> > > code.
> > 
> > Even in C++ code you don't use placement new that often, so e.g. by having
> > the placement new explicit through some special GIMPLE statement in the IL,
> > you could e.g. just look if a particular function or loop contains any
> > placement new stmts (cached in struct function and loop?) and use TBAA if
> > it isn't there.
> 
> I believe the convenience of TBAA lies in the fact that you don't have to
> prove anything about actual program behavior if the types are sufficiently
> distinct.  If you allow local violations of that principle, the global
> property inevitably breaks down as well.
> 
> In any case, C code can call C++ code and vice versa, so it's difficult to
> consider each language in isolation.

As I said in other mail even C code can change the dynamic type of
a storage location (via memcpy).  And as soon as you require
a look at stmts inbetween two refs that you ask the oracle to
disambiguate you are doing sth wrong.

Richard.



More information about the Gcc mailing list