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

    <tr>
        <th>Summary</th>
        <td>
            [DebugInfo][LoopLoadElim] Missing debug location updates
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          Apochens
      </td>
    </tr>
</table>

<pre>
    Missing debug location updates for new instructions at LoopLoadElimination[-L447](https://github.com/llvm/llvm-project/blob/e62ce1f8842cca36eb14126d79dcca0a85bf6d36/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp#L447), [-L452](https://github.com/llvm/llvm-project/blob/e62ce1f8842cca36eb14126d79dcca0a85bf6d36/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp#L452), [-L466](https://github.com/llvm/llvm-project/blob/e62ce1f8842cca36eb14126d79dcca0a85bf6d36/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp#L466).

```cpp
-> Value *Initial =
        new LoadInst(Cand.Load->getType(), InitialPtr, "load_initial",
                     /* isVolatile */ false, Cand.Load->getAlign(),
 PH->getTerminator()->getIterator());

->  PHINode *PHI = PHINode::Create(Initial->getType(), 2, "store_forwarded");
 PHI->insertBefore(L->getHeader()->begin());
    PHI->addIncoming(Initial, PH);

    ...

    Value *StoreValue = Cand.Store->getValueOperand();
    if (LoadType != StoreType)
-> StoreValue = CastInst::CreateBitOrPointerCast(StoreValue, LoadType,
 "store_forward_cast",
 Cand.Store->getIterator());

    PHI->addIncoming(StoreValue, L->getLoopLatch());

 Cand.Load->replaceAllUsesWith(PHI);
```

I'll give a patch for this later.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUVU-P27gP_TTyRRjDpv8kPviQTBokwPx-DdBu9ziQJdrRQpEMSW7Rb7-Q4jTOTLuLPdYwEpg0Hx-faJI5JweN2JJqS6pdwiZ_NrbdjIafUbukM-J7-z_pnNQDFdhNA1WGMy-NptMomEdHe2Opxm9UauftxIPPUebpizHji2Hig5IXqWMMqbZPL2W5ItWOwPrs_ehIsSGwJ7AfpD9PXcrNhcBeqa-3v6fRmr-QewL7TpmOwB5r4Jj363UJnLOixi4vc6jFqhGcs4ytq66vRVEvcGSI-2yZdr2xF0dg_4kzxSyB_U9opnwcCRSRKTQEnumVeAW_C_EKHojX9e9CvK4JNCnJdiTbzL91dr3DK9HyRIoP9AtTE1ICm6OWXjJFSbG7uul8hZ4MaY7aeQLrZ6ZFGp5D-ID-8_cRCaxnnWaUk7dRNQBlmHiVVysBIPD8iP5wRT03VLovRjEvVSRGYE97phwGxLfZN0oO-kf6Gfp0uHFDG5Ux9vrKbD56tHdjuIvtUqooDD0djv83IlI4HY5Bl5spnHyxebbIfCh9rvmnesAsg_PG4mtv7DdmBYqoxD1tAA7hUju0fou9sQHjZYY8IBO4KKHDQer35IOCMxAT4qi5uUg93AkGKqfD-3JDXJqmb00_OuNT4D4_FbvrEUTbTC-6Po5omRYzqyUl2dNQi2EiSEMJ5AElAly1ahaqv8vlfOy7heJb6T_ak5Haow1-Aut7VKjxlureEG8P4JXHuEU3vivq33rkl2K_4TLDxW-VeX7-Jd5DZ1scFeO4UeoPh-5P6UPc6XB8iLt90EuYI4GVUnSQX5EyOoaMcbH4s3RUMY82TURbiKZoWIJtvsqromnyqknOreCrLKtXrBc5sKxEXgrgOWOQVRXWHSayhQzKrMrzrCirqkmhz8sm45yJvqnXTU_KDC9MqjRMr9TYIZHOTdg2-bqoE8U6VC6uSIC46YIzHEO1S2wbR2Y3DY6UmZLOuzuKl17F3boLq_OoexPmcLVdTkBS7eg_b9hksqr9z6M7kgxzNxbxdwAAAP__sHdf2Q">