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

--- Comment #7 from Alejandro Colomar <alx at kernel dot org> ---
alx@devuan:~/tmp$ cat nninz.c | grep -Tn ^
                  1:    #include <stdlib.h>
                  2:
                  3:    extern int  any;
                  4:
                  5:    [[gnu::nonnull]]
                  6:    void f(void *);
                  7:    [[gnu::nonnull_if_nonzero(1, 2)]]
                  8:    void g(void *, int);
                  9:
                 10:    int
                 11:    main(void)
                 12:    {
                 13:            int one = 1;
                 14:            int zero = 0;
                 15:
                 16:            f(NULL);  // -Wnonnull
                 17:            g(NULL, 1);  // -Wnonnull
                 18:            g(NULL, 0);
                 19:            g(NULL, one);  // -Wnonnull -O1
                 20:            g(NULL, zero);
                 21:            g(NULL, any);
                 22:    }
alx@devuan:~/tmp$ gcc-15 -Wall -Wextra -O3 -S nninz.c 
nninz.c: In function ‘main’:
nninz.c:16:9: warning: argument 1 null where non-null expected [-Wnonnull]
   16 |         f(NULL);  // -Wnonnull
      |         ^
nninz.c:6:6: note: in a call to function ‘f’ declared ‘nonnull’
    6 | void f(void *);
      |      ^
nninz.c:17:9: warning: argument 1 null where non-null expected because argument
2 is nonzero [-Wnonnull]
   17 |         g(NULL, 1);  // -Wnonnull
      |         ^
nninz.c:8:6: note: in a call to function ‘g’ declared ‘nonnull_if_nonzero’
    8 | void g(void *, int);
      |      ^
nninz.c:19:9: warning: argument 1 null where non-null expected because argument
2 is nonzero [-Wnonnull]
   19 |         g(NULL, one);  // -Wnonnull -O1
      |         ^~~~~~~~~~~~
nninz.c:8:6: note: in a call to function ‘g’ declared ‘nonnull_if_nonzero’
    8 | void g(void *, int);
      |      ^



Assuming that there's no agreement on wanting to diagnose line 21 under
-Wnonnull, could we add -Wnonnull-maybe-nonzero-size for diagnosing it?

Reply via email to