child-wait.c:66:32: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] hash_table_insert(child_pids, POINTER_CAST(pid), wait); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:111:20: note: expanded from macro 'hash_table_insert' (void *)((char*)(key) + COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE((table)._key, key)), \ ^~~ child-wait.c:66:32: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] hash_table_insert(child_pids, POINTER_CAST(pid), wait); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:111:79: note: expanded from macro 'hash_table_insert' (void *)((char*)(key) + COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE((table)._key, key)), \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ./macros.h:178:52: note: expanded from macro 'COMPILE_ERROR_IF_TYPES_NOT_COMPATIBLE' !__builtin_types_compatible_p(typeof(_a), typeof(_b))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ ./macros.h:170:25: note: expanded from macro 'COMPILE_ERROR_IF_TRUE' (sizeof(char[1 - 2 * ((condition) ? 1 : 0)]) - 1) ^~~~~~~~~ child-wait.c:72:32: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] hash_table_remove(child_pids, POINTER_CAST(pid)); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:124:46: note: expanded from macro 'hash_table_remove' if (unlikely(!hash_table_try_remove(table, key))) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ ./hash.h:121:33: note: expanded from macro 'hash_table_try_remove' (const void *)((const char *)(key) + COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE((table)._const_key, (table)._key, key))) ^ ./macros.h:189:45: note: expanded from macro 'unlikely' # define unlikely(expr) (__builtin_expect((expr) ? 1 : 0, 0) != 0) ^~~~ child-wait.c:72:32: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] hash_table_remove(child_pids, POINTER_CAST(pid)); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:124:46: note: expanded from macro 'hash_table_remove' if (unlikely(!hash_table_try_remove(table, key))) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ ./hash.h:121:113: note: expanded from macro 'hash_table_try_remove' (const void *)((const char *)(key) + COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE((table)._const_key, (table)._key, key))) ^ ./macros.h:181:53: note: expanded from macro 'COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE' !__builtin_types_compatible_p(typeof(_a1), typeof(_b)) && \ ^ ./macros.h:170:25: note: expanded from macro 'COMPILE_ERROR_IF_TRUE' (sizeof(char[1 - 2 * ((condition) ? 1 : 0)]) - 1) ^ ./macros.h:189:45: note: expanded from macro 'unlikely' # define unlikely(expr) (__builtin_expect((expr) ? 1 : 0, 0) != 0) ^~~~ child-wait.c:72:32: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] hash_table_remove(child_pids, POINTER_CAST(pid)); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:124:46: note: expanded from macro 'hash_table_remove' if (unlikely(!hash_table_try_remove(table, key))) \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ ./hash.h:121:113: note: expanded from macro 'hash_table_try_remove' (const void *)((const char *)(key) + COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE((table)._const_key, (table)._key, key))) ^ ./macros.h:182:53: note: expanded from macro 'COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE' !__builtin_types_compatible_p(typeof(_a2), typeof(_b))) ^ ./macros.h:170:25: note: expanded from macro 'COMPILE_ERROR_IF_TRUE' (sizeof(char[1 - 2 * ((condition) ? 1 : 0)]) - 1) ^ ./macros.h:189:45: note: expanded from macro 'unlikely' # define unlikely(expr) (__builtin_expect((expr) ? 1 : 0, 0) != 0) ^~~~ child-wait.c:82:7: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] POINTER_CAST(status.pid)); ^~~~~~~~~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:80:33: note: expanded from macro 'hash_table_lookup' (const void *)((const char *)(key) + COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE((table)._key, (table)._const_key, key))) ^~~ child-wait.c:82:7: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] POINTER_CAST(status.pid)); ^~~~~~~~~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:80:113: note: expanded from macro 'hash_table_lookup' (const void *)((const char *)(key) + COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE((table)._key, (table)._const_key, key))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ./macros.h:181:53: note: expanded from macro 'COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE' !__builtin_types_compatible_p(typeof(_a1), typeof(_b)) && \ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~ ./macros.h:170:25: note: expanded from macro 'COMPILE_ERROR_IF_TRUE' (sizeof(char[1 - 2 * ((condition) ? 1 : 0)]) - 1) ^~~~~~~~~ child-wait.c:82:7: warning: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Wnull-pointer-arithmetic] POINTER_CAST(status.pid)); ^~~~~~~~~~~~~~~~~~~~~~~~~ ./macros.h:42:27: note: expanded from macro 'POINTER_CAST' ((void *) ((char *) NULL + (i))) ^ ./hash.h:80:113: note: expanded from macro 'hash_table_lookup' (const void *)((const char *)(key) + COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE((table)._key, (table)._const_key, key))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ ./macros.h:182:53: note: expanded from macro 'COMPILE_ERROR_IF_TYPES2_NOT_COMPATIBLE' !__builtin_types_compatible_p(typeof(_a2), typeof(_b))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ ./macros.h:170:25: note: expanded from macro 'COMPILE_ERROR_IF_TRUE' (sizeof(char[1 - 2 * ((condition) ? 1 : 0)]) - 1) ^~~~~~~~~ 8 warnings generated.