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.
--
Florian Weimer / Red Hat Product Security Team