[Bug c/88367] [9 Regression] -fno-delete-null-pointer-checks doesn't work properly
pbutsykin at virtuozzo dot com
gcc-bugzilla@gcc.gnu.org
Wed Dec 5 12:50:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88367
--- Comment #4 from Pavel <pbutsykin at virtuozzo dot com> ---
Jonathan, sorry, attached.
Richard,
I forgot to show the structures:
struct kmapset_map {
struct kref kref;
unsigned size;
struct kmapset_set *set;
unsigned long default_value;
unsigned long hash;
struct hlist_head links;
union {
struct rb_node node;
struct rcu_head rcu_head;
};
};
struct kmapset_link {
struct kmapset_map *map;
struct kmapset_key *key;
unsigned long value;
struct hlist_node map_link;
union {
struct hlist_node key_link;
struct rcu_head rcu_head;
};
};
Actually link_a is'n NULL, because map_link isn't the first member and
hlist_entry is just container_of:
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
"In the case when map_a->links.first is NULL, then link_a will be equal to
(NULL - 24) and expression &((struct kmapset_link *)(NULL - 24))->map_link will
refer to NULL."
More information about the Gcc-bugs
mailing list