<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/134367>134367</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            StackSafetyLocalAnalysis Assertion failed with ASAN
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          van-ema
      </td>
    </tr>
</table>

<pre>
    While compiling rust standard library with optimizatons and asan I found a similar issue to https://github.com/llvm/llvm-project/issues/87923


```
rustc: /home/ubuntu/rust-misc/llvm-project/llvm/lib/Analysis/StackSafetyAnalysis.cpp:540: void {anonymous}::StackSafetyLocalAnalysis::analyzeAllUses(llvm::Value*, {anonymous}::UseInfo<llvm::GlobalValue>&, const llvm::StackLifetime&): Assertion `isa<Function>(Callee) || isa<GlobalAlias>(Callee)' failed.
error: could not compile `std` (lib)
```

to reproduce run any rust program with 
```
RUSTFLAGS="-C opt-level=3  -Zsanitizer=address" cargo build --target x86_64-unknown-linux-gnu -Zbuild-std
```
issue can be reproduced at any opt level > 0

Rust version: 1.82
llvm: llvmorg-19.1.4

Debugging this I found that assertion `assert(isa<Function>(Callee) || isa<GlobalAlias>(Callee));` fails because of
`@getrandom = extern_weak global i8 at   %13 = tail call noundef i64 @getrandom(ptr noundef nonnull %ptr46, i64 noundef %new_len45, i32 noundef 4) #25, !dbg !1007 in module std.33b5cc56158b1412-cgu.15`

My workaround for now is to not take `GlobalVariable` Callee(s)

```
        const GlobalValue *Callee =
 dyn_cast<GlobalValue>(CB.getCalledOperand()->stripPointerCasts());
         if (!Callee || isa<GlobalIFunc>(Callee) || isa<GlobalVariable>(Callee)) {
          US.addRange(I, UnknownRange, /*IsSafe=*/false);
 break;
        }
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVUtv4zYQ_jXjy0CGROrlgw-KvV4E2D6waVpgLwEljmU2NGmQVLzeX19Qkp3spgWKooYBW5r3N9_MCO9Vb4jWUNxBsV2IIRysW78Ik9BRLForL-s_DkoTdvZ4UlqZHt3gA_ogjBROolatE-6CZxUOaE9BHdU3EazxKIxE4YXBe9zbIT6gV0elhUPl_UAYLB5COHngDbAdsF2vwmFol509Attp_XL9SU7O_kldALYbLT2wXV2tGIe0mb9lOn_TJubXAW8Q2O5gjwRsN7SDCQOwXZQlR-W7956v8VQLbNcYoS9exUAPQXTPD2JP4XJ9u-xOJ-BNkacxzItVEqG6E8aay9EOHqptLIk3b0w_2U7om9dRKuLTN2q0fvSxpHrMYBT9LvRAwBpgm7_3_Ojp3uwt8M2r0UdtW6EnU_4BWBmtO2t8wFelMaVPak9BRWRKYKtYQ-M9uaCsQShT5QXwzW4wXXwz-qo3QmsiYCuEagPVBielKWajlfA_6AGrcC-UJrmEtCHnrIuBOjtoicaGmVAUA_ogoUwxQhDRX_3QUEibYNHRyVk5dIRuMCjMZSLiydneiePEvx8MPz8-_Lb71Hx8AL4FxpJNJGii6YU08C1HTL54YVRQ38gB3wopHXkPjGEnXG-xHZSWmCRBuJ4Cfq3LpzJPBvNs7NkkWpnha9KbAZMvo2YS6_g-g4nonTDY0msFEkUYK7CngGM6CPwDzrV-jmW9kPMj-A1my5pB2sw9HHtpXZ9kq2W2zCeTLbVD38fhDAflbwMXDjHO29ZOD8Dq_6nHK-B3sXWx0x5b6sTgCe1-hiFPewpOGGmPCHyL9DWQM09nEs_Yj25R1REMRGBFxkelIJTGTmiNJlZBe1Rljm99AatPwd3ExhozaB1dnILLR95Hk6scWGHo_KTJ5MUo4-wmy8dyGWejBFgm2z7-ZGlaoTJ4tHLQhD7IJedt0XVFmRV1m-UZS7p-WGbFjaM_XfBs3bNwI_Z7GxM8o_Jxz0XCB_E8sv06p06JVlNE7wpo7Wfyf08inD_TLL8ZcwTWTLYRuKgpL-apEz7c2va6DurN3bKnMOrLX04UoQRWA1slwD_44NTpV6tMILcRPvhJNHc4prRCFaGsgWXXmO9Zch8Z9S_YdKv-HaHivntTM-Ljw1JI-VmYPiJ0H9v0OE3g_C62bQesufdx1Y6jHu_JXmhPt_yxdSSe5__zJ27T75FeyDWXK74SC1pnVc6rsuBptjisRVfndVnuRVtRtU-l7FbVqihlXueSKKWFWrOUFWme5lmWFWm63Kd1K-uK7SWrC5nmkKd0FEov4_wuresX425YZzznZbXQoiXtxzPMmKHzdCKBsXiV3Xq8Ve3Qe8hTrXzwr26CCprW_3Rq3mz2aRtPi7J5aH5eDE6v__sBnhN_WbO_AgAA___IPpIp">