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

            Bug ID: 99362
           Summary: invalid unused result
           Product: gcc
           Version: 10.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gcc at cookiesoft dot de
  Target Milestone: ---
            Target: arm

The following code will emit a warning on arm 32 bit compilers:

```
struct S {
    [[nodiscard]] S() {}
};

int main() {
    S s;
}
```

```
<source>: In function 'int main()':
<source>:6:7: warning: ignoring return value of 'S::S()', declared with
attribute 'nodiscard' [-Wunused-result]
    6 |     S s;
      |       ^
<source>:2:19: note: declared here
    2 |     [[nodiscard]] S() {}
      |                   ^
<source>:6:7: warning: ignoring return value of 'S::S()', declared with
attribute 'nodiscard' [-Wunused-result]
    6 |     S s;
      |       ^
<source>:2:19: note: declared here
    2 |     [[nodiscard]] S() {}
      |                   ^
Compiler returned: 0
```

```
S s = {}
```

does not emit such warning.

Does not emit a warning on x86 compiler though.
Does not emit a warning on 9.x branch, seems to be a regression.

Godbolt link: https://godbolt.org/z/4Kof1x

Reply via email to