On Tue, 26 Jul 2016, Prathamesh Kulkarni wrote:

> Many warnings for dead-calls are emitted with patch on call to
> operator new in libsupc++/eh_alloc.cc, which I am not sure are correct
> or false positives, for instance:
> 
> /home/prathamesh.kulkarni/gcc-svn/trunk/libstdc++-v3/libsupc++/eh_alloc.cc:170:22:
> warning: Call from void* {anonymous}::pool::allocate(std::size_t) to
> void* operator new(std::size_t, void*) has no effect [-Wunused-value]
>     new (f) free_entry;
>                       ^
> It appears to me new() is defined as follows in libsupc++/new:
> // Default placement versions of operator new.
> inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
> { return __p; }
> 
> So could it be considered as a dead call since new() doesn't have side-effect
> and it's return value is not assigned to any variable
> or is the warning wrong for the above call ?

The warning is wrong as it has semantic meaning in the C++ language.
Implementation-wise it is correct.  A way out would be to set
TREE_NO_WARNING on the call emitted by the FE.

Richard.

Reply via email to