rjmccall added a comment.

In D79378#4101613 <https://reviews.llvm.org/D79378#4101613>, @shiva0217 wrote:

> Hi,
>
> I have a question for the delete function call sinking in -Oz.
>
> https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3690.pdf.
> According to 3.7.4.2/3
> ` The value of the first argument supplied to a deallocation function may be 
> a null pointer value; if so, and if the deallocation function is one supplied 
> in the standard library, the call has no effect. Otherwise, the behavior is 
> undefined`
>
> It seems the null checking can be skipped only when the delete is not from 
> the standard library(have been overloaded by the user), isn't it?

The paragraph you just quoted says that the deallocation functions provided by 
the standard library are required have no effect on null pointers.  That means 
it's fine to call them with a null pointer even if the source wouldn't normally 
execute that call.  We could just insert these calls into random other code if 
we wanted to.

As discussed in the original review, removing null checks around calls to 
`operator delete` is rarely going to be a good code-speed optimization, but it 
is a good code-size optimization, and `-Oz` in Clang is a request to minimize 
code size even if it makes the code slower.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79378/new/

https://reviews.llvm.org/D79378

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to