On Fri, Feb 16, 2024 at 01:51:54PM +0000, Jonathan Wakely wrote: > Ah, although __atomic_compare_exchange only takes pointers, the > compiler replaces that with a call to __atomic_compare_exchange_n > which takes the newval by value, which presumably uses an 80-bit FP > register and so the padding bits become indeterminate again.
__atomic_compare_exchange_n only works with integers, so I guess it is doing VIEW_CONVERT_EXPR (aka union-style type punning) on the argument. Do you have preprocessed source for the testcase? Jakub