gimple: Return fnspec only for replaceable new/delete operators called from new/delet...
authorJakub Jelinek <jakub@redhat.com>
Fri, 4 Dec 2020 18:10:56 +0000 (19:10 +0100)
committerJakub Jelinek <jakub@redhat.com>
Fri, 4 Dec 2020 18:10:56 +0000 (19:10 +0100)
commit78c4a9feceaccf487516aa1eff417e0741556e10
tree7859396b43ee48402bc959acd0bc4572bb0ee56a
parentac2a6962b91128e700ee52db686dcdb2bab93790
gimple: Return fnspec only for replaceable new/delete operators called from new/delete [PR98130]

As mentioned in the PR, we shouldn't treat non-replaceable operator
new/delete (e.g. with the placement new) as replaceable ones.

There is some pending discussion that perhaps operator delete called from
delete if not replaceable should return some other fnspec, but can we handle
that incrementally, fix this wrong-code and then deal with a missed
optimization?  I really don't know what exactly should be returned.

2020-12-04  Jakub Jelinek  <jakub@redhat.com>

PR c++/98130
* gimple.c (gimple_call_fnspec): Only return ".co " for replaceable
operator delete or ".mC" for replaceable operator new called from
new/delete.

* g++.dg/opt/pr98130.C: New test.
gcc/gimple.c
gcc/testsuite/g++.dg/opt/pr98130.C [new file with mode: 0644]