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.