On 4/27/22 8:50 AM, Mateusz Guzik wrote:
On 4/27/22, John Baldwin <j...@freebsd.org> wrote:
On 4/27/22 6:30 AM, Mateusz Guzik wrote:
The branch main has been updated by mjg:

URL:
https://cgit.FreeBSD.org/src/commit/?id=b40c0db6f6d61ed594118d81dc691b9263a7e4d7

commit b40c0db6f6d61ed594118d81dc691b9263a7e4d7
Author:     Mateusz Guzik <m...@freebsd.org>
AuthorDate: 2022-04-27 13:29:12 +0000
Commit:     Mateusz Guzik <m...@freebsd.org>
CommitDate: 2022-04-27 13:29:12 +0000

      Patch up __diagused for when only one of INVARIANTS or WITNESS is
defined

      Reported by:    John F Carr<j...@mit.edu>
---
   sys/sys/systm.h | 9 ++++++---
   1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/sys/sys/systm.h b/sys/sys/systm.h
index f2ffa7e6b815..6ca9ee886562 100644
--- a/sys/sys/systm.h
+++ b/sys/sys/systm.h
@@ -554,10 +554,13 @@ void _gone_in_dev(device_t dev, int major, const
char *msg);
   #define gone_in(major, msg)          __gone_ok(major, msg) _gone_in(major, 
msg)
   #define gone_in_dev(dev, major, msg) __gone_ok(major, msg)
_gone_in_dev(dev, major, msg)

-#if defined(INVARIANTS) || defined(WITNESS)
-#define        __diagused
-#else
+#if !defined(INVARIANTS) && !defined(WITNESS)
+#define        __diagused      __unused
+#elif ((defined(INVARIANTS) && !defined(WITNESS)) || \
+       (!defined(INVARIANTS) && defined(WITNESS)))
   #define      __diagused      __unused
+#else
+#define        __diagused
   #endif

Hmm, could this just be:

#if defined(INVARIANTS) && defined(WITNESS)
#define __diagused
#else
#define __diagused __unused
#endif


it does boil down to it and if you want to make the change I'm not
going to stand in the way, but then imo it should get a comment that
there is no dedicated macro for invariants or witness only so some
warnings are possibly silenced when they should not be

however, the point here is that the case of only one of these being
defined is distinct from the rest and may warrant special treatment. I
wanted to preserve the distinction in the, arguably hairy,
conditional.

The other option perhaps is to split out a separate __witness_used as
I suspect the majority of __diagused cases are for INVARIANTS.  In a
few other places where I didn't want to use bare __unused I added
option-specific helpers (e.g. __usbdebug_unused).

--
John Baldwin

Reply via email to