<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:11px">cmpxchg only support exchange on int operands, but pointer values can be very useful here, e.g. stack<T> in a linked-list, the top can be atomic<Node<T>*>. </span><div style="font-family:arial,sans-serif;font-size:11px">in clang++, cmpxchg operations on atomic<T*>  are bitcasted i64 and do the operation, which is ugly.</div><div style="font-family:arial,sans-serif;font-size:11px"><br></div><div style="font-family:arial,sans-serif;font-size:11px">Any reason or concern why cmpxchg doesn't support pointer operands?</div><div style="font-family:arial,sans-serif;font-size:11px"><br></div><div style="font-family:arial,sans-serif;font-size:11px">Thanks</div></div>