https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87408
Bug ID: 87408 Summary: Enhance -Wunused-value to catch more complex expressions Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org Blocks: 87403 Target Milestone: --- For the following example: $ cat /tmp/test.C struct A { int a; }; A mya; static A *get() { return &mya; } int main() { A *p = get (); p->a; // issue #1 get ()->a; // issue #2 return 0; } GCC only catches only one issue, clang both of them: $ g++ /tmp/test.C -Wall -Wextra /tmp/test.C: In function ‘int main()’: /tmp/test.C:13:6: warning: statement has no effect [-Wunused-value] p->a; ~~~^ $ clang++ /tmp/test.C -Wall -Wextra /tmp/test.C:13:6: warning: expression result unused [-Wunused-value] p->a; ~ ^ /tmp/test.C:15:11: warning: expression result unused [-Wunused-value] get ()->a; ~~~~~~ ^ Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87403 [Bug 87403] Issues that suggest a new warning