Daniil Troshkov via llvm-dev
2017-Mar-30 16:51 UTC
[llvm-dev] [question] сpp-test: own global delete operator
Hi all!
There is the cpp-test "p755a.cpp":
// It checks to see if you can define your own global delete operator.
extern "C" void _exit(int);
void operator delete(void *p) throw() {
_exit(0);
}
int main () {
int* i = new int;
delete i;
return 1;
}
clang-3.8 returns 0 with O0 and returns 1 with O1
gcc always returns 0
clang with O1 uses default "delete":
clang-3.8 -c -S p755a.cpp -O1
...
main: # @main
.cfi_startproc
# BB#0: # %entry
movl $1, %eax
retq
.Lfunc_end1:
.size main, .Lfunc_end1-main
.cfi_endproc
...
As far as I understand it is not right...
I will be grateful to get any explanations.
PS
I haven't tested clang 4.0 yet...
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20170330/4a020618/attachment.html>
Reid Kleckner via llvm-dev
2017-Mar-30 18:09 UTC
[llvm-dev] [question] сpp-test: own global delete operator
C++ compilers are allowed to delete paired new/delete expressions after N3664, which I believe was voted into C++14. If you do not want this behavior, call '::operator new/delete' instead. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3664.html On Thu, Mar 30, 2017 at 9:51 AM, Daniil Troshkov via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi all! > > There is the cpp-test "p755a.cpp": > > // It checks to see if you can define your own global delete operator. > extern "C" void _exit(int); > void operator delete(void *p) throw() { > _exit(0); > } > int main () { > int* i = new int; > delete i; > return 1; > } > > clang-3.8 returns 0 with O0 and returns 1 with O1 > gcc always returns 0 > > clang with O1 uses default "delete": > > clang-3.8 -c -S p755a.cpp -O1 > > ... > main: # @main > .cfi_startproc > # BB#0: # %entry > movl $1, %eax > retq > .Lfunc_end1: > .size main, .Lfunc_end1-main > .cfi_endproc > ... > > As far as I understand it is not right... > > I will be grateful to get any explanations. > > PS > I haven't tested clang 4.0 yet... > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170330/9eaa1b80/attachment.html>