On 10/08/2013 11:37 AM, Uros Bizjak wrote: > > As shown in the attached testcase, arguments of various __atomic > builtins should be converted as signed, so the immediates get properly > extended. > > 2013-10-08 Uros Bizjak <ubiz...@gmail.com> > > * optabs.c (maybe_emit_atomic_exchange): Convert operands as signed. > (maybe_emit_sync_lock_test_and_set): Ditto. > (expand_atomic_compare_and_swap): Ditto. > (maybe_emit_op): Ditto. > > testsuite/ChangeLog: > > 2013-10-08 Uros Bizjak <ubiz...@gmail.com> > > * g++.dg/ext/atomic-2.C: New test. > > Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}. > > OK for mainline and release branches?
This doesn't seem right at all. The bug is that I gets set to UINT64_MAX, right? Where's the incorrect conversion from int to __int128_t? Surely you can produce a reduced test case that doesn't involve all of <atomic> to show that. r~