http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59871
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org, | |mpolacek at gcc dot gnu.org Target Milestone|--- |4.9.0 --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Confirmed, for say: extern int bar (); void foo (int *p) { p[0] = (bar (), 1, bar ()); p[1] = (1, bar ()); bar (), 1, bar (); bar (), 1; 1, bar (); } both g++ and clang warn about all 5 cases, while gcc only about 2 of them. g++ gives: pr59871.c:6:27: warning: right operand of comma operator has no effect [-Wunused-value] pr59871.c:7:19: warning: left operand of comma operator has no effect [-Wunused-value] pr59871.c:8:19: warning: right operand of comma operator has no effect [-Wunused-value] pr59871.c:9:12: warning: right operand of comma operator has no effect [-Wunused-value] pr59871.c:10:11: warning: left operand of comma operator has no effect [-Wunused-value] and gcc only: pr59871.c:7:12: warning: left-hand operand of comma expression has no effect [-Wunused-value] pr59871.c:10:4: warning: left-hand operand of comma expression has no effect [-Wunused-value] I'd say we want to follow what C++ FE does.