On 11/6/25 7:22 PM, Andrew MacLeod wrote:
I can add a check in the inferred range manager for atomic loads to resolve this PR.
The IL sequence tends to look like:

     _1 = &this_2(D)->b;
     __atomic_load_8 (_1, 0);

Just want to make sure I get this right since memory operations are not my strong suit.

The first argument to the atomic load is non-null (so _1), as well as the base of the RHS of the address expression that defines _1 are non- zero?.  (this_2)

The attached patch scavenges a little code from fold_using_range::range_of_address that I think works... but perhaps there is a more efficient way to do this?  Is this likely to work OK and be safe?  or are there additional checks I need to be doing?

And I suppose there is an entire range of atomic operations this applies to?  certainly atomic_store should qualify...

Bootstraps on x86_64-pc-linux-gnu with no regressions, but I'm not sure that is a really extensive test for this..
I think my question would be do we have to handle this specially at all. As you later noted, we may get what we want just by getting the non-null on the builtins set properly.

jeff

Reply via email to