<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">