Wow, thank you all, you guys!<br><br>在 2024年3月14日星期四,Jonathan Wakely <<a href="mailto:jwakely@redhat.com">jwakely@redhat.com</a>> 写道:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, 16 Feb 2024 at 15:15, Jonathan Wakely wrote:<br>
><br>
> On Fri, 16 Feb 2024 at 14:10, Jakub Jelinek wrote:<br>
> ><br>
> > On Fri, Feb 16, 2024 at 01:51:54PM +0000, Jonathan Wakely wrote:<br>
> > > Ah, although __atomic_compare_exchange only takes pointers, the<br>
> > > compiler replaces that with a call to __atomic_compare_exchange_n<br>
> > > which takes the newval by value, which presumably uses an 80-bit FP<br>
> > > register and so the padding bits become indeterminate again.<br>
> ><br>
> > __atomic_compare_exchange_n only works with integers, so I guess<br>
> > it is doing VIEW_CONVERT_EXPR (aka union-style type punning) on the<br>
> > argument.<br>
> ><br>
> > Do you have preprocessed source for the testcase?<br>
><br>
> Sent offlist.<br>
<br>
Jakub fixed the compiler, so I've pushed the attached patch now.<br>
<br>
Tested x86_64-linux.<br>
</blockquote>