Question about -Wnonnull

Fredrik Hederstierna fredrik.hederstierna@securitas-direct.com
Fri Mar 9 13:33:00 GMT 2012


Hi

I'm testing __attribute__((nonnull)) and -Wnonnull.
It seems like it does warn before constant/vrp propagations.

Example code does not warn for first 2 calls to f(NULL),
but warns for last 2 calls to f(NULL).

Couldn't this checker be improved/extended to do checks also after some basic optimizations like constant propagation pass?
(This could improve possibilities for static code analysis in compile time.)


#include <stdio.h>

static void f(const char *s) __attribute__((nonnull(1)));

int main(void)
{ 
  const char *p = NULL;

  f(p);                  /* No warning? */
  f(p = NULL);           /* No warning? */

  f((const char*)NULL);  /* gives warning */
  f(NULL);               /* gives warning */
  return 0;
}

static void f(const char *s)
{
  printf("%s",s);
}


Thanks & Best Regards
Fredrik Hederstierna



More information about the Gcc mailing list