https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91314

Eric Gallager <egallager at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |egallager at gcc dot gnu.org

--- Comment #3 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Keith Thompson from comment #0)
> Test case:
> 
> int main() {
>     int a;
>     &(a=0);
> }
> 
> Demonstration:
> 
> $ g++ -c -Wunused-value confusing_warning.cpp 
> confusing_warning.cpp: In function ‘int main()’:
> confusing_warning.cpp:3:7: warning: right operand of comma operator has no
> effect [-Wunused-value]
>     3 |     &(a=0);
>       |       ^
> 
> The problem: The warning refers to a comma operator that does not
> exist in the source.

Reminds me of bug 70619

> 
> Speculation (please ignore this if it's not useful):
> The compiler internally generates some internal data structure that's
> similar to a comma operator (something like `(a=0), &a`) and the
> warning message is based on that.
> 
> I've reproduced this problem with all versions of g++ I have access
> to, from 4.1.2 to 10.0.0 20190718 (experimental).
> 
> This problem was originally reported by Stefan Ram <r...@zedat.fu-berlin.de>
> on comp.lang.c++, 2019-07-24, thread "why can't I apply a bitwise modifier
> directly in a function call?".

Reply via email to