This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Tue, Oct 18, 2011 at 06:03:16PM -0400, Andrew MacLeod wrote:Here's the last of the missing intrinsics. compare_exchange is slightly different than the others since it doesn't map directly to an rtl pattern. Its format is :
bool __atomic_compare_exchange (T* mem, T* expected, T desired, bool weak, memory_order success, memory_order failure)
note that the expected parameter is a pointer as well. In the case where false is returned, the value of expected is updated.I think the __sync_* way here was much better (two intrinsics instead of one, one bool-ish and one returning val). With mandating T*expected you force it to be addressable, probably until expansion time at which point it will be just forced into memory, which is highly undesirable.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |