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

Reply via email to