<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/73314>73314</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[IPSCCP] The `llvm.threadlocal.address.*` intrinsic blocks constant propagation
</td>
</tr>
<tr>
<th>Labels</th>
<td>
ipo,
llvm:transforms
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
omern1
</td>
</tr>
</table>
<pre>
Reproducer:
```c
static __thread int lol = 45; // Removing __thread from the declaration allows it to be constant propagated.
int a(int b) {
return lol + b;
}
int c(int d) {
return lol * d;
}
```
IR:
```llvm
@lol = internal thread_local global i32 45, align 4
define dso_local noundef i32 @a(int)(i32 noundef %b) local_unnamed_addr #0 {
entry:
%0 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @lol)
%1 = load i32, ptr %0, align 4
%add = add nsw i32 %1, %b
ret i32 %add
}
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #1
define dso_local noundef i32 @c(int)(i32 noundef %d) local_unnamed_addr #0 {
entry:
%0 = tail call align 4 ptr @llvm.threadlocal.address.p0(ptr align 4 @lol)
%1 = load i32, ptr %0, align 4
%mul = mul nsw i32 %1, %d
ret i32 %mul
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcVMGO4zYM_Rr5QmxgUfY4OfgwmSDA3hbT3gNZYhy1smRI8i727wvJzmbQTRfttUAQ2ib5xPdIUcZoRkfUs_bI2lMll3TzofcTBcerwevv_TvNwetFUWDildUnVt__X-r1p9b3mGQyCi6XdAskNRiXwHoLTJygaZk4AsMzwzO80-S_Gjc-Qq_BT5BuBJqUlUEm4x1Ia_23CCZB8jAQKO9iki7BHPwsR5lI7z7Wk8-TDPfZDgwPwLrj6gEACJSW4NaC8AgDE5uTdae_o6gNRf8a5RX0E5S7Kh9BP78_tLv7rf06bZ-a-q6TcYmCkxZWYS7WK2lhtH6QFozALCS-gbRmdNB8PELT1TgCHf2W5PziNF1LFmvqTRmGh_wg8IefYVvUKlmXxTk5kb5IrQMwFPWDP7kUvv_gATmxLkUnaSwoae29LphTyGdmiruVSUHfZVSKcTfXDPc56J6wSpCLe4DzAm59HiWBmXaBxbb-SYISL7UuGdm6-G0lji3P0YXkFhoo3X1S66dDsI4hgfPOLdb-ez5bQpkbFPy_NEj9okH6f9GgaVmHPNsnDdJPGjQt9p_uV6V7oQ_iICvqeVfXe8RWYHXr95x3nVLqOgyDbjUn4kqi5BKRrk23r0yPNQrOseF1gxx3Task1_jy0jV0rTvNmpomaeyu6OPDWJkYF-o7IXhTWTmQjWVjIprZM8zcGWK50eI1Beni1YcpZk97qkKfPZ-GZYxZRhNTfCAnk2xZv5-__Pb29oW1J_j9RrAtiKfNYZhVyLsiGBeNgsF69Wf8eUEa76ol2P6W0hzzYJT9O5p0W4ad8hPDc6l5NZ_m4P8glRieC93I8FwY_xUAAP___QfOJQ">