Mesa (main): meson: Ignore unused variables in release builds

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Apr 23 18:14:44 UTC 2022


Module: Mesa
Branch: main
Commit: 46b099e3925d118b1637505b1f26de50059649aa
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=46b099e3925d118b1637505b1f26de50059649aa

Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date:   Sat Apr 23 13:31:54 2022 -0400

meson: Ignore unused variables in release builds

Variables that are only used for assertions are considered unused in release
builds. Don't treat this as an error, since we build with -Werror even for
release in CI. This causes reasonable code to build and pass tests locally (and
therefore to be queued for merge by reasonable developers), but later fail in CI
due to a variable used only as an assertion. This pattern is common enough we
have an ASSERTED macro to workaround the behaviour, but failing a CI run to
have the author go back and add in the ASSERTED and re-queue later is a recipe
for frustration, wasted time, and wasted CI bandwidth.

Disable this behaviour to reduce CI friction.

In my view, sprinkling in ASSERTED clutters the code, rather than helps; I find
CI's insistence on doing so actively counterproductive. Developers are free to
continue doing so after this change. But this way CI won't fail merge requests
over it. After all, CI enforces policy, and we shouldn't have "mark variables
only used for assertions as ASSERTED" as policy. Let's pick our battles wisely
and improve CI's signal-to-noise ratio.

As an added benefit, this eliminates a class of defects where ASSERTED is used
incorrectly, e.g:

   c91e3c6a428 ("util: Should not use ASSERTED in util_thread_get_time_nano")
   3e22fc27af9 ("zink: remove incorrect ASSERTED macro")
   0d08ce287bf ("pan/bi: Remove dated ASSERTED properties")

Note that actual unused variables will be caught by debug builds. It is expected
that developers do debug builds locally before ramming code through CI, so that
should be caught.

Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Suggested-by: Daniel Stone <daniels at collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Reviewed-by: Emma Anholt <emma at anholt.net>
Acked-by: Eric Engestrom <eric at engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15582>

---

 meson.build | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/meson.build b/meson.build
index 7d3520c17ba..8f71422803b 100644
--- a/meson.build
+++ b/meson.build
@@ -1207,6 +1207,14 @@ else
     _trial_cpp += ['-ffunction-sections', '-fdata-sections']
   endif
 
+  # Variables that are only used for assertions are considered unused in release
+  # builds. Don't treat this as an error, since we build with -Werror even for
+  # release in CI.
+  if get_option('buildtype') == 'release'
+    _trial_c += ['-Wno-unused-variable', '-Wno-unused-but-set-variable']
+    _trial_cpp += ['-Wno-unused-variable', '-Wno-unused-but-set-variable']
+  endif
+
   c_args += cc.get_supported_arguments(_trial_c)
   cpp_args += cpp.get_supported_arguments(_trial_cpp)
 



More information about the mesa-commit mailing list