1 static int a = 1;
   2 static int b[2] = {1, 1};
   3 static void c(void) {}
   4 
   5 static int *d = &a;         // OK
   6 static int *e = d;              // KO
   7 static int *f = b;              // OK
   8 
   9 static void (*g)(void) = c;     // OK
  10 static void (*h)(void) = &c;        // OK
  11 
  12 static int *i = &*&a;           // OK
  13 static int *j = &*b;                // OK
  14 static int *k = &*d;                // KO
  15 
  16 
  17 static void l(void) {
  18         int a = 1;
  19         static int *b = &a; // KO
  20 }
  21 
  22 static void m(void) {
  23         static int a = 1;
  24         static int *b = &a; // OK
  25 }
  26 
  27 /*
  28  * check-name: address of static object constness verification.
  29  * check-command: sparse -Wconstexpr-not-const $file
  30  *
  31  * check-error-start
  32 constexpr-addr-of-static.c:6:17: warning: non-constant initializer for static object
  33 constexpr-addr-of-static.c:14:19: warning: non-constant initializer for static object
  34 constexpr-addr-of-static.c:19:26: warning: non-constant initializer for static object
  35  * check-error-end
  36  */