[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[csmith-dev] --max-pointer-depth not honored?
Dear Csmith developers,
I have been testing Csmith 2.2.0 (Git version dcef523), and I am trying to understand the meaning of the --max-pointer-depth option.
If I understood well, Csmith with --max-pointer-depth N should produce a program with pointer-dereferencing expressions of length at most N+1 (i.e. without pointer dereferences of the form *..*x with N+2 stars or more.)
However, with --max-pointer-depth 0, I still managed to produce the attached C program with a depth-2 pointer dereference (and similarly, with --max-pointer-depth 1 and a depth-3 pointer dereference, although in the latter case, it is hard to generate such programs if shorter than 400 lines).
Moreover, massive tests show that, with --no-checksum --no-argc --no-arrays --no-bitfields --no-structs --no-unions --max-pointer-depth 1, more than 70% of all programs generated by Csmith (regardless of their sizes) reach pointer dereference level 3 or more (sometimes up to 8).
So, is my understanding correct?
- If so, is there a bug in Csmith that makes --max-pointer-depth not properly honored?
- Otherwise, what should be the exact meaning of this option, and which use cases were intended? How could I control the maximum pointer dereference level in Csmith-generated programs?
And then, a final question too: even though it might be possible to limit the level of pointer dereference expressions, is there a way to limit the depth of pointer types?
Thank you in advance for your help.
Best regards,
--
Tahina Oliver Ramananandro, Ph. D.
Senior Engineer, Advanced Compilers and Formal Verification
Reservoir Labs, Inc.
632 Broadway, Suite 803
New York, NY 10012
USA
Phone: +1 (212) 780-0527 ext. 157
Notes:
[#] Here I consider that --max-pointer-depth 0 does not prevent Csmith from producing pointers at large, by contrast to --no-pointers
/*
* This is a RANDOMLY GENERATED PROGRAM.
*
* Generator: csmith 2.2.0
* Git version: dcef523
* Options: --no-checksum --no-argc --no-bitfields --no-structs --no-unions --no-arrays --max-pointer-depth 1
* Seed: 1180627777
*/
#include "csmith.h"
volatile uint64_t csmith_sink_ = 0;
static long __undefined;
/* --- Struct/Union Declarations --- */
/* --- GLOBAL VARIABLES --- */
static int8_t g_12 = 0L;
static int64_t g_13 = (-1L);
static const uint8_t g_37 = 0xDBL;
static int32_t g_39 = 0xD4782549L;
static int32_t * volatile g_38 = &g_39;/* VOLATILE GLOBAL g_38 */
static int8_t *g_46 = (void*)0;
static int32_t g_62 = 0x5AB171C2L;
static const int32_t *g_91 = &g_62;
static const int32_t **g_90 = &g_91;
static int16_t g_94 = 0xE74CL;
static int32_t g_96 = 9L;
static uint16_t g_123 = 0x6F3BL;
static int32_t *g_128 = &g_96;
static int32_t **g_127 = &g_128;
static int32_t ***g_126 = &g_127;
static uint8_t g_137 = 255UL;
static int32_t ** const *g_142 = (void*)0;
static uint8_t g_164 = 0xD3L;
static uint32_t g_165 = 0UL;
static uint16_t g_248 = 0UL;
static int64_t g_253 = (-1L);
static int8_t g_266 = 0xB1L;
static uint8_t g_294 = 0UL;
static uint64_t g_300 = 0x8013064C4D074B32LL;
static uint32_t g_305 = 0UL;
/* --- FORWARD DECLARATIONS --- */
static uint16_t func_1(void);
static int32_t func_5(int16_t p_6);
static int8_t func_8(int8_t p_9, int8_t p_10);
static const int32_t * const func_14(int8_t * const p_15, int32_t p_16, uint32_t p_17, int8_t * p_18, uint8_t p_19);
static int32_t func_23(uint32_t p_24, uint16_t p_25, int32_t p_26);
static uint8_t func_50(int32_t p_51, uint8_t p_52);
static int8_t func_55(int8_t * p_56, const uint8_t p_57);
static int8_t * func_58(uint8_t p_59);
static int32_t * func_63(uint32_t p_64, uint64_t p_65);
static uint32_t func_69(int32_t * p_70);
/* --- FUNCTIONS --- */
/* ------------------------------------------ */
/*
* reads : g_13 g_12 g_37 g_38 g_39 g_46 g_62 g_90 g_91 g_96 g_94 g_123 g_127 g_128 g_137 g_164 g_165 g_126 g_248 g_294
* writes: g_12 g_39 g_62 g_90 g_94 g_96 g_123 g_165 g_128 g_248 g_253 g_164 g_266 g_91 g_294 g_300 g_305 g_13
*/
static uint16_t func_1(void)
{ /* block id: 0 */
int32_t l_7 = 7L;
int8_t *l_11 = &g_12;
int32_t *l_61 = &g_62;
int32_t **l_60 = &l_61;
uint64_t *l_299 = &g_300;
int32_t l_301 = 0x1438A765L;
int32_t ****l_302 = &g_126;
int32_t *l_303 = (void*)0;
int32_t *l_304 = (void*)0;
uint8_t *l_306 = &g_164;
const int32_t **l_307 = &g_91;
const int32_t ***l_308 = &l_307;
const int32_t ***l_309 = (void*)0;
const int32_t ***l_310 = &g_90;
int16_t l_313 = (-3L);
int64_t *l_314 = (void*)0;
int64_t *l_315 = &g_13;
uint32_t l_316 = 0x31D6AA01L;
int32_t l_317 = 0x2636EEB1L;
int64_t l_318 = 0x92F17FB0F1F695C9LL;
g_294 ^= (((((safe_sub_func_int16_t_s_s((~func_5((l_7 != func_8(((*l_11) = 1L), g_13)))), (func_50(((safe_rshift_func_int8_t_s_u(func_55(func_58(((void*)0 != l_60)), (((g_253 = ((safe_mod_func_int8_t_s_s(0L, g_37)) , g_137)) > g_37) ^ g_137)), 2)) ^ 0x3EL), g_37) == g_37))) <= 0xBF17L) , 0xE5L) , (**l_60)) < 0x80L);
l_317 ^= ((*l_61) = (((+(l_316 = ((*l_315) &= (((((safe_mul_func_uint8_t_u_u(((&l_61 == ((*l_310) = ((*l_308) = (((*l_306) = ((!((*l_299) = (*l_61))) & (((l_301 = 0xEED50243L) , (g_305 = ((void*)0 != l_302))) , (*l_61)))) , l_307)))) != (safe_rshift_func_uint16_t_u_s(0xE2A2L, 15))), (((**l_60) < 0xDCF8C165L) < 0x7E8E832CL))) , g_39) == g_62) < l_313) > (*l_61))))) != 0x2F05403430B8F8A4LL) && (*l_61)));
return l_318;
}
/* ------------------------------------------ */
/*
* reads : g_38 g_39
* writes:
*/
static int32_t func_5(int16_t p_6)
{ /* block id: 19 */
return (*g_38);
}
/* ------------------------------------------ */
/*
* reads : g_13 g_12 g_37 g_38 g_39 g_46
* writes: g_39 g_12
*/
static int8_t func_8(int8_t p_9, int8_t p_10)
{ /* block id: 2 */
int8_t l_29 = 8L;
int32_t l_32 = 0xE3F9150FL;
const int32_t *l_48 = &g_39;
const int32_t **l_47 = &l_48;
int32_t *l_49 = &g_39;
(*l_47) = func_14(((safe_mul_func_uint16_t_u_u(((~func_23(g_13, (0UL || ((g_12 | (l_29 ^= p_10)) && (4L < ((safe_mod_func_uint16_t_u_u(l_32, (~(safe_sub_func_int8_t_s_s((g_12 ^ 0x392715EE56E31BB0LL), g_12))))) || l_32)))), l_32)) , p_10), g_13)) , (void*)0), l_32, l_32, g_46, g_37);
(*l_49) = (*l_48);
return (*l_49);
}
/* ------------------------------------------ */
/*
* reads :
* writes:
*/
static const int32_t * const func_14(int8_t * const p_15, int32_t p_16, uint32_t p_17, int8_t * p_18, uint8_t p_19)
{ /* block id: 14 */
return &g_39;
}
/* ------------------------------------------ */
/*
* reads : g_37 g_38 g_39 g_12
* writes: g_39 g_12
*/
static int32_t func_23(uint32_t p_24, uint16_t p_25, int32_t p_26)
{ /* block id: 4 */
uint8_t l_40 = 254UL;
int32_t l_41 = 0x3E141B6BL;
int32_t l_44 = (-10L);
int32_t *l_45 = &g_39;
(*g_38) ^= (!g_37);
l_41 |= l_40;
for (g_12 = 25; (g_12 != (-4)); g_12--)
{ /* block id: 9 */
return (*g_38);
}
(*l_45) |= l_44;
return (*g_38);
}
/* ------------------------------------------ */
/*
* reads :
* writes:
*/
static uint8_t func_50(int32_t p_51, uint8_t p_52)
{ /* block id: 72 */
uint16_t l_293 = 0xBAA5L;
return l_293;
}
/* ------------------------------------------ */
/*
* reads : g_127 g_94 g_137 g_62 g_128 g_90 g_164
* writes: g_128 g_94 g_164 g_266 g_62 g_91
*/
static int8_t func_55(int8_t * p_56, const uint8_t p_57)
{ /* block id: 55 */
uint32_t l_254 = 0x13081650L;
int32_t ***l_255 = &g_127;
int32_t *l_260 = (void*)0;
int32_t *l_262 = &g_62;
int32_t **l_261 = &l_262;
int16_t *l_263 = &g_94;
uint8_t *l_264 = &g_164;
int8_t *l_265 = &g_266;
int32_t *l_267 = &g_62;
uint32_t l_277 = 0xAFDE751AL;
uint8_t l_282 = 0x8CL;
int32_t l_291 = 0x2662B469L;
int32_t l_292 = (-5L);
(*l_267) |= (l_254 < (p_57 | (((l_255 = l_255) == &g_90) >= (((0x3E41L && ((safe_add_func_int8_t_s_s(((*l_265) = (safe_add_func_int16_t_s_s(((*l_263) &= (l_254 , (((*g_127) = l_260) == ((*l_261) = l_260)))), (((*l_264) = p_57) > 255UL)))), p_57)) , g_137)) , &l_261) == (void*)0))));
(*g_90) = ((*l_261) = ((*g_127) = (**l_255)));
(*l_267) &= 0x74014540L;
l_292 ^= (safe_mul_func_int8_t_s_s((safe_sub_func_int32_t_s_s((-4L), (l_282 <= (safe_mod_func_uint32_t_u_u((g_62 < (safe_mod_func_int32_t_s_s(p_57, (safe_lshift_func_uint16_t_u_u(p_57, (*l_267)))))), ((((*l_261) = ((*g_127) = (*l_261))) == (((safe_mod_func_int32_t_s_s((&l_255 == (void*)0), l_291)) , g_164) , (void*)0)) | p_57)))))), p_57));
return (*l_267);
}
/* ------------------------------------------ */
/*
* reads : g_62 g_13 g_90 g_37 g_91 g_96 g_94 g_123 g_127 g_128 g_137 g_164 g_165 g_126 g_248 g_46
* writes: g_62 g_90 g_94 g_96 g_123 g_165 g_128 g_248
*/
static int8_t * func_58(uint8_t p_59)
{ /* block id: 21 */
int64_t l_66 = 1L;
int32_t *l_166 = &g_62;
int32_t *l_167 = &g_62;
int32_t *l_168 = &g_96;
int32_t *l_169 = (void*)0;
int32_t *l_170 = &g_96;
int32_t *l_171 = &g_62;
int32_t *l_172 = &g_62;
int32_t *l_173 = (void*)0;
int32_t *l_174 = &g_96;
int32_t l_175 = (-1L);
int32_t l_176 = (-2L);
int32_t *l_177 = &g_62;
int32_t *l_178 = &g_96;
int32_t *l_179 = &l_176;
int32_t *l_180 = &l_176;
int32_t *l_181 = &l_175;
int32_t *l_182 = &l_175;
int32_t *l_183 = &l_176;
int32_t l_184 = 0x8B6AEB2BL;
int32_t *l_185 = (void*)0;
int32_t l_186 = 0L;
int32_t *l_187 = &l_175;
int32_t *l_188 = &l_184;
int32_t *l_189 = (void*)0;
int32_t *l_190 = (void*)0;
int32_t *l_191 = (void*)0;
int32_t *l_192 = &l_186;
int32_t l_193 = 0x3B8C42DAL;
int32_t *l_194 = &l_184;
int32_t *l_195 = &l_175;
int32_t *l_196 = &l_184;
int32_t *l_197 = &l_176;
int32_t *l_198 = (void*)0;
int32_t *l_199 = &l_175;
int32_t *l_200 = &g_62;
int32_t *l_201 = (void*)0;
int32_t *l_202 = (void*)0;
int32_t *l_203 = &l_184;
int32_t *l_204 = &l_186;
int32_t *l_205 = (void*)0;
int32_t *l_206 = &l_186;
int32_t *l_207 = &l_175;
int32_t *l_208 = &l_184;
int32_t l_209 = (-6L);
int32_t *l_210 = &l_184;
int32_t l_211 = 1L;
int32_t *l_212 = &g_96;
int32_t *l_213 = &l_184;
int32_t l_214 = 5L;
int32_t *l_215 = &l_175;
int32_t *l_216 = &l_211;
int32_t l_217 = 0x5803A083L;
int32_t l_218 = 0x1E9BB602L;
int32_t *l_219 = &g_62;
int32_t *l_220 = &g_96;
int32_t *l_221 = &l_184;
int32_t *l_222 = &l_186;
int32_t *l_223 = (void*)0;
int32_t *l_224 = &l_218;
int32_t l_225 = (-9L);
int32_t *l_226 = &l_214;
int32_t *l_227 = &l_217;
int32_t *l_228 = &l_209;
int32_t *l_229 = (void*)0;
int32_t l_230 = 0x8505D4F8L;
int32_t *l_231 = &l_211;
int32_t *l_232 = &l_184;
int32_t *l_233 = &l_193;
int32_t *l_234 = &l_230;
int32_t *l_235 = &l_217;
int32_t *l_236 = &l_211;
int32_t *l_237 = &l_214;
int32_t *l_238 = (void*)0;
int32_t *l_239 = &l_211;
int32_t *l_240 = &l_225;
int32_t *l_241 = (void*)0;
int32_t *l_242 = &l_186;
int32_t l_243 = (-1L);
int32_t *l_244 = (void*)0;
int32_t *l_245 = &l_243;
int32_t *l_246 = &l_176;
int32_t *l_247 = &l_211;
l_166 = ((**g_126) = func_63(g_62, l_66));
++g_248;
return g_46;
}
/* ------------------------------------------ */
/*
* reads : g_62 g_13 g_90 g_37 g_91 g_96 g_94 g_123 g_127 g_128 g_137 g_164 g_165
* writes: g_62 g_90 g_94 g_96 g_123 g_165
*/
static int32_t * func_63(uint32_t p_64, uint64_t p_65)
{ /* block id: 22 */
int32_t *l_71 = &g_62;
(*l_71) = ((safe_lshift_func_int16_t_s_u(((func_69(l_71) || ((safe_unary_minus_func_uint32_t_u(((g_96 , (g_94 | 1L)) & (((safe_rshift_func_int8_t_s_s((!(*l_71)), (((safe_mul_func_int16_t_s_s(((*g_128) >= (g_165 |= (65535UL != (safe_rshift_func_int8_t_s_u((safe_mod_func_int16_t_s_s((safe_lshift_func_uint16_t_u_u(((safe_lshift_func_uint16_t_u_s(0xF130L, g_164)) <= p_65), 7)), 0x33AFL)), 5))))), g_37)) , g_94) && p_65))) == 0x95BEA926L) , p_64)))) && p_65)) , 6L), g_164)) != p_64);
return (*g_127);
}
/* ------------------------------------------ */
/*
* reads : g_62 g_13 g_90 g_37 g_91 g_96 g_94 g_123 g_127 g_128 g_137
* writes: g_62 g_90 g_94 g_96 g_123
*/
static uint32_t func_69(int32_t * p_70)
{ /* block id: 23 */
uint32_t l_74 = 0xD0509419L;
int32_t l_75 = (-7L);
int16_t *l_115 = &g_94;
int32_t ***l_129 = &g_127;
uint8_t *l_145 = &g_137;
uint8_t l_149 = 0x7CL;
for (g_62 = 9; (g_62 < 10); ++g_62)
{ /* block id: 26 */
const uint8_t l_76 = 0x1FL;
const int32_t ***l_92 = &g_90;
int16_t *l_93 = &g_94;
int32_t *l_95 = &g_96;
uint16_t *l_122 = &g_123;
int32_t ** const *l_140 = (void*)0;
(*l_95) = ((l_75 = l_74) | ((l_76 || (((((l_76 > ((safe_mod_func_int16_t_s_s((g_62 <= (safe_rshift_func_int8_t_s_u(((safe_rshift_func_uint8_t_u_u((safe_sub_func_int16_t_s_s(((safe_unary_minus_func_int16_t_s(((*l_93) = ((-6L) >= ((((safe_mod_func_uint64_t_u_u(g_13, ((safe_lshift_func_uint16_t_u_s(((((((18446744073709551608UL > (((*l_92) = g_90) != &p_70)) <= 4294967295UL) , g_62) <= g_37) , (***l_92)) && g_37), 0)) & l_76))) || 3L) == (-1L)) && l_74))))) , (***l_92)), g_62)), l_74)) >= (*p_70)), 5))), 0x7F96L)) | 9L)) >= (-2L)) >= (-1L)) , (***l_92)) < g_37)) , l_74));
(*l_95) = (safe_lshift_func_uint16_t_u_u((safe_mod_func_int16_t_s_s((safe_add_func_uint8_t_u_u(g_13, (***l_92))), ((((*l_122) &= (safe_rshift_func_uint16_t_u_s((((((safe_rshift_func_int8_t_s_u((safe_rshift_func_int8_t_s_u(((safe_sub_func_uint16_t_u_u(((safe_mul_func_uint8_t_u_u((*l_95), ((((g_37 , g_37) && (safe_lshift_func_uint8_t_u_u((l_93 == l_115), 1))) < g_62) || (safe_sub_func_int64_t_s_s(((safe_add_func_int32_t_s_s(((safe_mod_func_uint64_t_u_u(g_62, g_94)) == 0UL), 0xE6FB37E8L)) , l_75), g_96))))) <= 0x52L), 0x54C9L)) < l_74), 7)), 3)) > 1UL) , (**g_90)) , l_115) != l_115), 15))) > 0xFF03L) | l_75))), 0));
}
l_149 &= (((safe_lshift_func_uint8_t_u_u(((g_123 || ((void*)0 == l_145)) & (((safe_unary_minus_func_int32_t_s((l_145 != &g_137))) > ((&g_37 != &g_137) != (0x57L > 0x26L))) , g_123)), 0)) , (***l_129)) <= 0xA2L);
return g_137;
}
/* ---------------------------------------- */
int main (void)
{
int print_hash_value = 0;
platform_main_begin();
func_1();
csmith_sink_ = g_12;
csmith_sink_ = g_13;
csmith_sink_ = g_37;
csmith_sink_ = g_39;
csmith_sink_ = g_62;
csmith_sink_ = g_94;
csmith_sink_ = g_96;
csmith_sink_ = g_123;
csmith_sink_ = g_137;
csmith_sink_ = g_164;
csmith_sink_ = g_165;
csmith_sink_ = g_248;
csmith_sink_ = g_253;
csmith_sink_ = g_266;
csmith_sink_ = g_294;
csmith_sink_ = g_300;
csmith_sink_ = g_305;
platform_main_end(0,0);
return 0;
}
/************************ statistics *************************
XXX max struct depth: 0
breakdown:
depth: 0, occurrence: 59
XXX total union variables: 0
XXX max expression depth: 34
breakdown:
depth: 1, occurrence: 34
depth: 2, occurrence: 2
depth: 3, occurrence: 1
depth: 4, occurrence: 1
depth: 13, occurrence: 1
depth: 16, occurrence: 1
depth: 20, occurrence: 1
depth: 21, occurrence: 1
depth: 24, occurrence: 1
depth: 25, occurrence: 1
depth: 27, occurrence: 1
depth: 29, occurrence: 1
depth: 34, occurrence: 1
XXX total number of pointers: 119
XXX times a variable address is taken: 104
XXX times a pointer is dereferenced on RHS: 34
breakdown:
depth: 1, occurrence: 23
depth: 2, occurrence: 4
depth: 3, occurrence: 7
XXX times a pointer is dereferenced on LHS: 35
breakdown:
depth: 1, occurrence: 33
depth: 2, occurrence: 2
XXX times a pointer is compared with null: 4
XXX times a pointer is compared with address of another variable: 1
XXX times a pointer is compared with another pointer: 3
XXX times a pointer is qualified to be dereferenced: 314
XXX max dereference level: 4
breakdown:
level: 0, occurrence: 0
level: 1, occurrence: 114
level: 2, occurrence: 35
level: 3, occurrence: 36
level: 4, occurrence: 3
XXX number of pointers point to pointers: 17
XXX number of pointers point to scalars: 102
XXX number of pointers point to structs: 0
XXX percent of pointers has null in alias set: 24.4
XXX average alias set size: 1.05
XXX times a non-volatile is read: 202
XXX times a non-volatile is write: 92
XXX times a volatile is read: 3
XXX times read thru a pointer: 0
XXX times a volatile is write: 1
XXX times written thru a pointer: 0
XXX times a volatile is available for access: 9
XXX percentage of non-volatile access: 98.7
XXX forward jumps: 0
XXX backward jumps: 0
XXX stmts: 30
XXX max block depth: 1
breakdown:
depth: 0, occurrence: 27
depth: 1, occurrence: 3
XXX percentage a fresh-made variable is used: 22.8
XXX percentage an existing variable is used: 77.2
********************* end of statistics **********************/
/*
* This is a RANDOMLY GENERATED PROGRAM.
*
* Generator: csmith 2.2.0
* Git version: dcef523
* Options: --no-checksum --no-argc --no-bitfields --no-structs --no-unions --no-arrays --max-pointer-depth 0
* Seed: 2143174802
*/
#include "csmith.h"
volatile uint64_t csmith_sink_ = 0;
static long __undefined;
/* --- Struct/Union Declarations --- */
/* --- GLOBAL VARIABLES --- */
static int32_t g_3 = 4L;
static const int32_t *g_6 = &g_3;
static const int32_t ** volatile g_5 = &g_6;/* VOLATILE GLOBAL g_5 */
static volatile uint32_t g_8 = 1UL;/* VOLATILE GLOBAL g_8 */
static int32_t g_24 = (-5L);
/* --- FORWARD DECLARATIONS --- */
static uint64_t func_1(void);
static int16_t func_21(uint64_t p_22);
/* --- FUNCTIONS --- */
/* ------------------------------------------ */
/*
* reads : g_5 g_8 g_3
* writes: g_6 g_8 g_24 g_3
*/
static uint64_t func_1(void)
{ /* block id: 0 */
const int32_t *l_2 = &g_3;
const int32_t **l_4 = &l_2;
int32_t *l_7 = &g_3;
int32_t **l_26 = &l_7;
int32_t ***l_25 = &l_26;
(*g_5) = ((*l_4) = l_2);
g_8--;
(*l_7) = (safe_add_func_uint8_t_u_u((((*l_2) && (&g_6 != &l_2)) || (+(safe_rshift_func_uint16_t_u_u(65535UL, ((*l_7) || (*l_2)))))), (g_3 , ((safe_sub_func_uint16_t_u_u((safe_unary_minus_func_int64_t_s(((((*l_25) = ((safe_div_func_int16_t_s_s(func_21(((g_3 || ((*l_4) == (*l_4))) , g_3)), 0xB4B5L)) , &l_7)) != (void*)0) && 251UL))), g_3)) & (*l_2)))));
return (**l_26);
}
/* ------------------------------------------ */
/*
* reads : g_8
* writes: g_24
*/
static int16_t func_21(uint64_t p_22)
{ /* block id: 4 */
int32_t *l_23 = &g_24;
(*l_23) = 5L;
return g_8;
}
/* ---------------------------------------- */
int main (void)
{
int print_hash_value = 0;
platform_main_begin();
func_1();
csmith_sink_ = g_3;
csmith_sink_ = g_8;
csmith_sink_ = g_24;
platform_main_end(0,0);
return 0;
}
/************************ statistics *************************
XXX max struct depth: 0
breakdown:
depth: 0, occurrence: 2
XXX total union variables: 0
XXX max expression depth: 19
breakdown:
depth: 1, occurrence: 8
depth: 2, occurrence: 1
depth: 19, occurrence: 1
XXX total number of pointers: 8
XXX times a variable address is taken: 11
XXX times a pointer is dereferenced on RHS: 7
breakdown:
depth: 1, occurrence: 6
depth: 2, occurrence: 1
XXX times a pointer is dereferenced on LHS: 5
breakdown:
depth: 1, occurrence: 5
XXX times a pointer is compared with null: 0
XXX times a pointer is compared with address of another variable: 0
XXX times a pointer is compared with another pointer: 2
XXX times a pointer is qualified to be dereferenced: 17
XXX max dereference level: 2
breakdown:
level: 0, occurrence: 0
level: 1, occurrence: 12
level: 2, occurrence: 2
XXX number of pointers point to pointers: 4
XXX number of pointers point to scalars: 4
XXX number of pointers point to structs: 0
XXX percent of pointers has null in alias set: 0
XXX average alias set size: 1
XXX times a non-volatile is read: 21
XXX times a non-volatile is write: 9
XXX times a volatile is read: 1
XXX times read thru a pointer: 0
XXX times a volatile is write: 2
XXX times written thru a pointer: 0
XXX times a volatile is available for access: 5
XXX percentage of non-volatile access: 90.9
XXX forward jumps: 0
XXX backward jumps: 0
XXX stmts: 6
XXX max block depth: 0
breakdown:
depth: 0, occurrence: 6
XXX percentage a fresh-made variable is used: 11.1
XXX percentage an existing variable is used: 88.9
********************* end of statistics **********************/