Optimizing of explicit temporary storage
Mike Stump
mrs@apple.com
Mon Oct 11 04:34:00 GMT 2004
On Sunday, October 10, 2004, at 07:48 AM, Richard Guenther wrote:
> Is it legal for a conforming C++ compiler to optimize away storage
> allocation / deallocation? Like in
>
> #include <new>
>
> void foo(void)
> {
> int *x = new(std::nothrow) int;
> delete x;
> }
>
> is it allowed to kill the new and delete statements? Would it be
> allowed to do this for the throwing version of new, too?
The as if rule is fairly powerful... If the resulting program behaves
as if it had it, then the optimization is allowed. I don't think
memory consumption is an externally visible effect. Now, we might need
to do full program analysis to know which new is run, and to know its
semantics; I don't recall if the user is prohibited from adding
semantics to a new replacement function.
More information about the Gcc
mailing list