On Sat, 2013-09-07 at 12:33 +0200, Marc Glisse wrote: > Hello, > > this patch teaches the compiler that operator new, when it can throw, > isn't allowed to return a null pointer. Note that it doesn't work for > placement new (that one may have to be handled in the front-end or the > inliner), and it will not work on user-defined operator new if they are > inlined. I guess it would be possible to teach the inliner to insert an > assert_expr or something when inlining such a function, but that's not for > now. The code I removed from vrp_visit_stmt was duplicated in > stmt_interesting_for_vrp and thus useless.
Interesting patch. However, I feel that we should give advanced users the ability to say that their new operator is never returning null... In particular, if I define my own new operator which never returns nil, I find strange that it would be less optimized than the system's operator new. Perhaps we need an attribute `nonnullresult' which whould means that. (we already the nonnull attribute for function arguments) Cheers. -- Basile STARYNKEVITCH http://starynkevitch.net/Basile/ email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359 8, rue de la Faiencerie, 92340 Bourg La Reine, France *** opinions {are only mine, sont seulement les miennes} ***