<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/85226>85226</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[TSan] Invalid IR generated for atomicrmw with pointers
</td>
</tr>
<tr>
<th>Labels</th>
<td>
compiler-rt:tsan
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nikic
</td>
</tr>
</table>
<pre>
https://llvm.godbolt.org/z/o3nej9cKj
```llvm
; RUN: opt -S -passes=tsan
define void @atomic8_xchg_monotonic_ptr(ptr %a, ptr %b) {
entry:
atomicrmw xchg ptr %a, ptr %b monotonic
ret void
}
```
This produces:
```llvm
define void @atomic8_xchg_monotonic_ptr(ptr %a, ptr %b) {
entry:
%0 = call ptr @llvm.returnaddress(i32 0)
call void @__tsan_func_entry(ptr %0)
%1 = zext ptr %b to i64
%2 = call i64 @__tsan_atomic64_exchange(ptr %a, i64 %1, i32 0)
call void @__tsan_func_exit()
ret void
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0U8FurDgQ_JrmYs0I2piBA4fJjkaKVtpDkj0jYxtwFmxkm2SSr19hJskoivTe5UkIbNTVVdWt4t7r3ihVA7sDdkr4EgbraqP_0yJprXyrhxBmD_QIeAY8j-PLtO-tbO0Y9tb1gOd3wLOlRj1X4u9nSE-QHqFIt2ctv_6id-Th33-AHomdA9k9kt3MvVce6Cl4brYqqTptFHmxWhLIUx7spEXZXMTQN5M1NlijRTMHB1jOwRFAxgH_ItdzC1gRONxtzZQJ7m1VHm-EbN3c9ErWfuQnPPkk-QA5FaKcq4vD6ZvD6zW-nwbtyeysXITyn8Q_DOOP2gRkKQF6IoKP4wbJI_feqbA4w6V0ynvAUlMkKWD1gYyAD1FNs66l6RYjmo3iU8stBpBlke1dXcLXHIMlushvivBLki7yG4LNfJE36iIGbnr1zXOsRpbF828LvugAWN6U_mqPiayprGjFE1VnhyzNMWdlkQy1EGVWUomMMVnkNBNcsA5ZmR2qgrX8kOgaU8xTmuUZZQUW-5JWBRecsbZQXYcd5KmauB73cQnW9Yn2flF1yRCLZOStGn3MH6Kw06xH5XYuAD3GXCCuuXT1Ct61S-_XbWof_Fe7oMMYE_z0yA2wE7k3L3zUktw_kF4Z5XhQknTW3UTgVYeBzFaboJxPFjd-C3qvw7C0e2Gna-qvn93s7LMSAfAcXXjAczTyfwAAAP__TGBIKw">