struct cds_lfht_node *node)
{
struct cds_lfht_node *bucket, *next;
- struct cds_lfht_node **node_next;
+ uintptr_t *node_next;
if (!node) /* Return -ENOENT if asked to delete NULL node */
return -ENOENT;
* NOTE: The node_next variable is present to avoid breaking
* strict-aliasing rules.
*/
- node_next = &node->next;
+ node_next = (uintptr_t*)&node->next;
uatomic_or_mo(node_next, REMOVED_FLAG, CMM_RELEASE);
/* We performed the (logical) deletion. */
for (j = size + start; j < size + start + len; j++) {
struct cds_lfht_node *fini_bucket = bucket_at(ht, j);
struct cds_lfht_node *parent_bucket = bucket_at(ht, j - size);
- struct cds_lfht_node **fini_bucket_next;
+ uintptr_t *fini_bucket_next;
urcu_posix_assert(j >= size && j < (size << 1));
dbg_printf("remove entry: order %lu index %lu hash %lu\n",
* NOTE: The fini_bucket_next variable is present to
* avoid breaking strict-aliasing rules.
*/
- fini_bucket_next = &fini_bucket->next;
+ fini_bucket_next = (uintptr_t*)&fini_bucket->next;
uatomic_or(fini_bucket_next, REMOVED_FLAG);
_cds_lfht_gc_bucket(parent_bucket, fini_bucket);
}