<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/60171>60171</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang: GNU-style statement expression returning atomic cannot be used in unary/binary expression
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          freenull
      </td>
    </tr>
</table>

<pre>
    Statement expressions that evaluate to an atomic type cannot be used as part of any unary or binary expressions.
Here is a simple test case:
```
_Atomic(_Bool) foo;
_Atomic(int) bar;
int main(void) {
    !!foo;
    !!({ foo; });
    
    -bar;
    -({ bar; });
}
```
Building with Clang 16.0.0 (`clang -std=gnu11 test.c`) yields:
```
test.c:5:6: error: invalid argument type '_Atomic(_Bool)' to unary expression
    !!({ foo; });
     ^~~~~~~~~~~
test.c:8:5: error: invalid argument type '_Atomic(int)' to unary expression
    -({ bar; });
 ^~~~~~~~~~~
test.c:4:5: warning: expression result unused [-Wunused-value]
    !!foo;
    ^~~~~
test.c:7:5: warning: expression result unused [-Wunused-value]
    -bar;
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVM1u2zAMfhr6QsSwZTu2Dj4ky7KddhmGHQvZZhwNihToJ10ue_bBipu2adeiwIIApkiJ38df4ZwcNVEL1RqqTSKC3xvb7iyRDkolnRnO7XcvPB1Ie6TfR0vOSaMd-r3wSCehgvCE3qDQKLw5yB79-UjYC62Nx44wOBpQODwK69HsUOgzBi3sGY3FTkbpiecUsg1kq69kCaVDgU4ejorQk_PYC0dQrC5XYJnN_3i8W0V4YM3d2hgFjOPOGCjWt2ap_WTshL0apfZ4EFIDa05GDpMZ6tmGiAgsB5Y_dfeoBdZAvZ6xEOoNMP782lVaPMWMivnxRX_7eDq-Fuk6SDVIPeK99Hv8pIQeMV-mWZrh5G-Z9VG1cH6AYjPqkOcxfWk_uWAcz5LU4P6VyPlqsaqgWC2hWCFZa-wkSH0SSg4o7BhiS8RaA6tfJh9YPbVFuKnvh7OHUH3-c_3dMGxmlh9ieKn_u_zers2btMoHWvfCaqnHyPAKgZZcUB6DjqMB1Xrx8yIvpnkiqDbvdt4F_Aa2_n-wzzr12h_J0BYDL7hIqM2XdckKnjVNsm85Vawe-qZgrCYh-ND3VDZ84NmOKs5FIluWsSLLWZY3rCybNM-7itddVZU8r_OCoMzoIKRKlTodUmPHRDoXqF1meZ0nSnSkXFxTjGm6x2gExqatZdvpzaILo4MyU9J59-jFS6-ojTMypePLtx8L58-K0L2y1tCSDzF1D7vsZo1JfWkYYNsXmysJVrV7749xsNgW2HaUfh-6tDcHYNuJ0vxZHK35Rb0Hto2BOGDbGOjfAAAA__9-tquu">