Re: [RFC PATCH 1/4] hazptr: Add initial implementation of hazard pointers

From: Mathieu Desnoyers
Date: Fri Sep 27 2024 - 16:12:39 EST


On 2024-09-27 21:23, Jonas Oberhauser wrote:
[...]
That idea seems to be confirmed by this (atrocious, not to be copied!) example:

int fct_escape_address_of_b(void)
{
    int *a, *b;

    do {
        a = READ_ONCE(p);
        asm volatile ("" : : : "memory");
        b = READ_ONCE(p);
    } while (a != b);

    // really really hide b
    int **p = &b;
    OPTIMIZER_HIDE_VAR(p);

    asm volatile ("" : : : "memory");
    return *b;
}

This also does not generate any additional instructions, unlike just using OPTIMIZER_HIDE_VAR(b).

What is the advantage of defining OPTIMIZE_HIDE_VAR the way it currently works instead of like above?

Did you try it on godbolt.org ? Does it have the intended effect ?
By the looks of it, you're just creating another version of @b called
"p", which is then never used and would be discarded by further
optimization. I'm unsure what you are trying to achieve here.

Thanks,

Mathieu

--
Mathieu Desnoyers
EfficiOS Inc.
https://www.efficios.com