modernc.org/ccgo/v3@v3.16.14/lib/testdata/tcc-0.9.27/tests/tests2/96_nodata_wanted.c (about) 1 /*****************************************************************************/ 2 /* test 'nodata_wanted' data output suppression */ 3 4 #if defined test_static_data_error 5 void foo() { 6 if (1) { 7 static short w = (int)&foo; /* initializer not computable */ 8 } 9 } 10 11 #elif defined test_static_nodata_error 12 void foo() { 13 if (0) { 14 static short w = (int)&foo; /* initializer not computable */ 15 } 16 } 17 18 #elif defined test_global_data_error 19 void foo(); 20 static short w = (int)&foo; /* initializer not computable */ 21 22 23 #elif defined test_local_data_noerror 24 void foo() { 25 short w = &foo; /* 2 cast warnings */ 26 } 27 28 #elif defined test_data_suppression_off || defined test_data_suppression_on 29 30 #if defined test_data_suppression_on 31 # define SKIP 1 32 #else 33 # define SKIP 0 34 #endif 35 36 #include <stdio.h> 37 /* some gcc headers #define __attribute__ to empty if it's not gcc */ 38 #undef __attribute__ 39 40 int main() 41 { 42 __label__ ts0, te0, ts1, te1; 43 int tl, dl; 44 45 static char ds0 = 0; 46 static char de0 = 0; 47 /* get reference size of empty jmp */ 48 ts0:; 49 if (!SKIP) {} 50 te0:; 51 dl = -(&de0 - &ds0); 52 tl = -(&&te0 - &&ts0); 53 54 /* test data and code suppression */ 55 static char ds1 = 0; 56 ts1:; 57 if (!SKIP) { 58 static void *p = (void*)&main; 59 static char cc[] = "static string"; 60 static double d = 8.0; 61 62 static struct __attribute__((packed)) { 63 unsigned x : 12; 64 unsigned char y : 7; 65 unsigned z : 28, a: 4, b: 5; 66 } s = { 0x333,0x44,0x555555,6,7 }; 67 68 printf("data:\n"); 69 printf(" %d - %.1f - %.1f - %s - %s\n", 70 sizeof 8.0, 8.0, d, __FUNCTION__, cc); 71 printf(" %x %x %x %x %x\n", 72 s.x, s.y, s.z, s.a, s.b); 73 } 74 te1:; 75 static char de1 = 0; 76 77 dl += &de1 - &ds1; 78 tl += &&te1 - &&ts1; 79 printf("size of data/text:\n %s/%s\n", 80 dl ? "non-zero":"zero", tl ? "non-zero":"zero"); 81 /*printf("# %d/%d\n", dl, tl);*/ 82 } 83 84 #endif