Skip to content
Snippets Groups Projects
Commit 27778979 authored by Jakub Jelinek's avatar Jakub Jelinek Committed by Jakub Jelinek
Browse files

Add -f{,no-}assume-sane-operators-new-delete options [PR110137]

The following patch adds a new option for optimizations related to
replaceable global operators new/delete.
The option isn't called -fassume-sane-operator-new (which clang++
implements), because
1) clang++ option means something different; initially it was an
   option to add malloc attribute to those declarations (but we have
   malloc attribute on all <new> calls already unconditionally);
   later it was changed to add noalias attribute rather than malloc,
   whatever it means, but it is certainly about the return value
   from the operator new (whether it can alias with other pointers);
   we already assume malloc-ish behavior that it doesn't alias any
   other pointers
2) the option only affects operator new, we want it affect also
   operator delete
The option basically allows to choose between pre-PR101480 behavior
(now the default, more optimistic) and post-PR101480 behavior (safer
but penalizing most of the code in the wild for rare needs).

I've tried to explain stuff in the documentation too.

2024-11-22  Jakub Jelinek  <jakub@redhat.com>

	PR c++/110137
	PR middle-end/101480
gcc/
	* doc/invoke.texi (-fassume-sane-operators-new-delete,
	-fno-assume-sane-operators-new-delete): Document.
	* gimple.cc (gimple_call_fnspec): Handle
	-f{,no-}assume-sane-operators-new-delete.
	* ipa-inline-transform.cc (inline_call): Also clear
	flag_assume_sane_operators_new_delete on caller when inlining
	-fno-assume-sane-operators-new-delete callee into
	-fassume-sane-operators-new-delete caller.
gcc/c-family/
	* c.opt (fassume-sane-operators-new-delete): New option.
gcc/testsuite/
	* g++.dg/tree-ssa/pr110137-1.C: New test.
	* g++.dg/tree-ssa/pr110137-2.C: New test.
	* g++.dg/tree-ssa/pr110137-3.C: New test.
	* g++.dg/tree-ssa/pr110137-4.C: New test.
	* g++.dg/torture/pr10148.C: Add -fno-assume-sane-operators-new-delete
	as dg-additional-options.
	* g++.dg/warn/Warray-bounds-16.C: Revert 2021-11-10 changes.
parent c25c1729
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment