[Bug c++/96749] [coroutines] unexpected 'warning: statement has no effect [-Wunused-value]'
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 15 15:49:17 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96749
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Iain D Sandoe <iains@gcc.gnu.org>:
https://gcc.gnu.org/g:ed8198461735f9b5b3c2cbe50f9913690ce4b4ca
commit r11-7674-ged8198461735f9b5b3c2cbe50f9913690ce4b4ca
Author: Iain Sandoe <iain@sandoe.co.uk>
Date: Tue Mar 2 10:12:58 2021 +0000
coroutines : Avoid generating empty statements [PR96749].
In the compiler-only idiom:
" a = (target expr creats temp, op uses temp) "
the target expression variable needs to be promoted to a frame one
(if the expression has a suspend point). However, the only uses of
the var are in the second part of the compound expression - and we
were creating an empty statement corresponding to the (now unused)
first arm. This then produces the spurious warnings noted.
Fixed by avoiding generation of a separate variable nest for
isolated target expressions (or similarly isolated co_awaits used
in a function call).
gcc/cp/ChangeLog:
PR c++/96749
* coroutines.cc (flatten_await_stmt): Allow for the case
where a target expression variable only has uses in the
second part of a compound expression.
(maybe_promote_temps): Avoid emiting empty statements.
gcc/testsuite/ChangeLog:
PR c++/96749
* g++.dg/coroutines/pr96749-1.C: New test.
* g++.dg/coroutines/pr96749-2.C: New test.
More information about the Gcc-bugs
mailing list