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

    <tr>
        <th>Summary</th>
        <td>
            "static assertion expression is not an integral constant expression" when compiling glib with clang 15
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    ```
$ clang --version
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 1c73596d345481de957e5ccc0bedf1fb9d9f643a)
Target: x86_64-unknown-linux-gnu
Thread model: posix
```

When compiling glib, Clang 15 issues an error "static assertion expression is not an integral constant expression".

Configuration step:
```
meson --buildtype=release . ../glib
```
Error message:
```
[352/1350] Compiling C object gio/gio-launch-desktop.p/gio-launch-desktop.c.o
FAILED: gio/gio-launch-desktop.p/gio-launch-desktop.c.o
clang -Igio/gio-launch-desktop.p -Igio -I../glib/gio -Iglib -I../glib/glib -fcolor-diagnostics -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -Wpedantic -std=gnu99 -O3 -D_GNU_SOURCE -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wimplicit-fallthrough -Wmisleading-indentation -Wunused -Wno-unused-parameter -Wno-cast-function-type -Wno-pedantic -Wno-format-zero-length -Wno-variadic-macros -Werror=format=2 -Werror=init-self -Werror=missing-include-dirs -Werror=pointer-arith -Werror=unused-result -Wstrict-prototypes -Wno-bad-function-cast -Werror=declaration-after-statement -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=pointer-sign '-DG_LOG_DOMAIN="GLib-GIO"' -DGIO_COMPILATION '-DGIO_LAUNCH_DESKTOP="/usr/local/libexec/gio-launch-desktop"' '-DGIO_MODULE_DIR="/usr/local/lib/gio/modules"' '-DLOCALSTATEDIR="/var/local"' -fvisibility=hidden -MD -MQ gio/gio-launch-desktop.p/gio-launch-desktop.c.o -MF gio/gio-launch-desktop.p/gio-launch-desktop.c.o.d -o gio/gio-launch-desktop.p/gio-launch-desktop.c.o -c ../glib/gio/gio-launch-desktop.c
../glib/gio/gio-launch-desktop.c:124:20: error: static assertion expression is not an integral constant expression
  G_STATIC_ASSERT (LOG_EMERG == 0 && "Linux ABI defines LOG_EMERG");
  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sys/syslog.h:51:19: note: expanded from macro 'LOG_EMERG'
#define LOG_EMERG       0       /* system is unusable */
                        ^
../glib/glib/gmacros.h:824:47: note: expanded from macro 'G_STATIC_ASSERT'
#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
                                              ^~~~
../glib/gio/gio-launch-desktop.c:125:20: error: static assertion expression is not an integral constant expression
  G_STATIC_ASSERT (LOG_DEBUG == 7 && "Linux ABI defines LOG_DEBUG");
  ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sys/syslog.h:58:19: note: expanded from macro 'LOG_DEBUG'
#define LOG_DEBUG       7       /* debug-level messages */
                        ^
../glib/glib/gmacros.h:824:47: note: expanded from macro 'G_STATIC_ASSERT'
#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
                                              ^~~~
2 errors generated.
```
Expressions like `0 == 0` and `7 == 7` are integer constant expressions. I am not sure what Clang doesn't like. Another strange thing is `_Static_assert` is technically from C11, but as illustrated by the provided error message, glib passes `std=gnu99`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztV1lz2zYQ_jXSC4Ycnjoe9CBTsqOJbKWWPHnUgMSSRAMRHAB07P76Lkhalh25jT3p9KHVUDwWiz2-PQCkkj3OBiOvv7zFwJsPgohkglYFcZx7UJrLqhvoiD2J-LHruR4ZBJPSmFoPQpx4iVfBTdmkbiYP-CHE_dPDqZX8HTLjIgPxs3EYT0csjOJo4jOYxmOIsyzzUmC5n6dTNs1HUUgHwbTTvaOqAINKyMNktB9FTlN9q-T3yhG8ah6comp6vlIBZeQgGQjLXUvNH3q_XrnZ3r-WUBG0teYoqCCF4OkgSEjSuurHhGvdgCa0IqCUVOhuoA01PCNUa1DGIgEPtQLdgsI1qaSx7LwyUCgqUHiFMypzwoZC3FMjElnlvGgUbcVpA7VF85zRB9DI4ThpwwUzjzUMwoUCAVQDcYnrWvytC-fmLlsHUIKmBbylYBBfhHGAYvww9gbxgiRHbBIiUxtAUnDZxlk6gjZVVjoM9Dcja7c-T85c2Qm_nK_Wy4UNy4dF9Im5eltAN4j3ZzRaRkvHj9cDLSnPpJDKYZwWldQYXU2cxf4Srd1vLi-3y93-YrXbItajiDhfqRB459U9FZw5dVbiFzwYRfFZA8NYY3o42jCcgIk5nRJnE1qBVzd3--3m7jZZospKIovimXFQDNUWYWdxtV-stvML1JvMt7t98mmZfN5aZYda8IwbJ0flplSyKazWA9cYe4ZzHV4xqEyXQc7Xpmo0MHxBLd27U1NFD2BAddSMapSG0NkZjk2ljv7sgP3KpTpQ4_wBCoGGqjBlR7-niqPezDnQTEltAbDZhQ53M_AlOCHyCk3XIPITGtquO8Mz0TBA8NWpnFraClIOKmqVPtF7b7CSGmGQ3mOIzcVI64XuDEwpe_bO-noiggFmUVdsDs2tElvScED8Tm0-Qv4k5mTeGT9eWPDaC82LCnvH2EZ4vcEob67nqxtkwFZwteapc7Xa4Cty2CRYbfbJ5vrLaj3frTY3_Twkrud3N8mn_WK5_bzbfOlmYw43WtkeKzMq7JOn8ADZ2eroVRwFXm8Wd5hri9Xt28I6QXjHntoI0Kcy1ptkvt7u5rvlqQhMjmcRnU_5Pdc8xT5iHpGt5AyTlTjXC_z_9pFmgPMuPzLPxZqQH1OYkVcN5Q3erk_9JG8494MI74Fnu2KfNXPyC5aY1gpCrvY2PKtkP99ul7c7u1zb_FteL2-viI1YuCB2ER_hZRe3tV1OyfxiRRjkvMJkPrK3sZwOwosn2YPx8t1X_P4p_-jV73j6tO97Eb7pR93dhSzcEmMS-zZYUxsdhB_acD3UFLsuI7mSB9J2QlsWJ4CNn-SHHZrPYJLu5_XPduuEcX_Exf9gQ2zbHE0F4Ei7r-ohP_-zqP6Ydf2j69CtD5M216LxTzjxKm_OuPIDx8RmH2YI2W_b9N136UuOI4lNsOVzJgMuoA02Xk2MJLiwaehT7C-dfRuCl0F9RwXG_0IFLpYXd8cKHP9tBbbs__EKnLynAnvAzlZgh333G7-sQAZpU-BW5x7E01ZZ_1-DH63BoCsoTQqoAHdOwNzzR5OjQZoI_g273sjzjssTfmCxMUscHyumJSroShA3tWcqULtkReihLVbdIO_3kpr-aMckaDyHjU2rzyVzZCpRDG4ncRiIKe2GHCsd9bzE0ipGuoGsrDhuccRjF7bE9y28aYOdQRMuRGNlocskfURxQHCDeM9tlOHFQQzntIeQ2opv9Z2cHPDLHcLMH42CaRyNg3DIZiGbhlM6NNwImP2q8yhi88NBmHy3W--sPwoPGyVm7zvq23puz8_4Eo9Hk_GwnI1gNE2zKApGzJtkcRD4YTQBiCDII8bi6VDQFISe4UEUj59DPgu8IPCmfuDhudQL3XwcRpnvTTw_ZwhEPog8OFAuXKvYlaoYqllrA9axxkHBtdHPg4gSbsUBnuTTxpRSzRAdRTND7RZVD1ujZ63FfwIoMS27">