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

    <tr>
        <th>Summary</th>
        <td>
            [LV] First order reccurences is incorrectly eliminated
        </td>
    </tr>

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

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

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

<pre>
    There is a regression caused by:

commit 02369b75fdd7b5fc5d9b47f1b60587c225918511
Author: Florian Hahn <flo@fhahn.com>
Date:   Mon Apr 17 12:30:52 2023 +0100

 [VPlan] Mark recurrence recipes as not having side-effects.

While I don't have a short test to share I will try to describe the problem.  Here is the VPlan for the problematic case before VPlanTransforms::removeDeadRecipes() call :

<x1> vector loop: {
 vector.body:
    EMIT vp<%2> = CANONICAL-INDUCTION
 FIRST-ORDER-RECURRENCE-PHI ir<%106> = phi ir<%.promoted>, ir<%111>
 WIDEN-INDUCTION %indvars.iv = phi 4, %indvars.iv.next, ir<2>
    vp<%5> = DERIVED-IV ir<4> + vp<%2> * ir<2>
    vp<%6>    = SCALAR-STEPS vp<%5>, ir<2>
    REPLICATE ir<%107> = or vp<%6>, ir<1>
    REPLICATE ir<%108> = getelementptr ir<%74>, ir<%107>
    INTERLEAVE-GROUP with factor 2 at %109, ir<%108>
      ir<%109> = load from index 0
    WIDEN ir<%110> = fadd ir<%75>, ir<%109>
    REPLICATE store ir<%110>, ir<%108>
    WIDEN ir<%111> = sub ir<0>, ir<%indvars.iv>
    EMIT vp<%13> = first-order splice ir<%106> ir<%111>
    EMIT vp<%14> = VF * UF +(nuw)  vp<%2>
 EMIT branch-on-count  vp<%14> vp<%0>
  No successors
}
Successor(s): middle.block

middle.block:
No successors
}

As you can see there are a FIRST-ORDER-RECURRENCE-PHI recipe and "first-order splice" instruction. Both are deleted by VPlanTransforms::removeDeadRecipes() as there are no uses of "first-order splice" instruction (after the change). This is incorrect because there is an implicit use of FIRST-ORDER-RECURRENCE-PHI in fixFixedOrderRecurrence which fixes resume value for scalar epilogue.

PS: It doesn't seem to be correct to prevent deletion by marking FIRST-ORDER-RECURRENCE-PHI as side effecting...but turning implicit use to explicit doesn't seem to be easy?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVk1z4jgQ_TXi0oXLljHGBw4EzA5VGZIiJHOW5TbWjixRkkySf78lm--Zye5e-FB3v35qtfqJWSt2CnFKkgdCaVWzWhFKSbIYsNbV2kyxMHhQ-jAodPk53dZoEIQFBgZ3Bq0VWgFnrcUSik8Sz0i4IOHxk-umEQ5CGo-zIk2qskyLpOJJmRWjtIqKcZhMUk5pkkWTJIr6oFmXl8QzWEptBFPwjdUKSDyvpCajsOMYcN2QOO8jFsyh9wf4rhXM9gaiFCJK4lkckniWUKAhjYHQhzAKw2uCQJKHt2fJFEkW8J2Zn2CQt8ag4uh_ij1aYBaUdlCzg1A7sKLEIVYVcmeDa6wftZAIKyi1IjTt_BEY2FobBw6tA6fB1sx4p3chJTjz6ddKtNyIAsHVCHujC4lNAPDtWGm_2nGESptrH-YEB84sQoGVNkevrWHKVto01h9GPDPY6AMukJWbfj-ETgjNgDMp4e68SDz_iEicwwG50wak1ntfWJI-HOvVGwLfC-dYAID8-2oLhz2J54Qm1EOQeAHz2fppvZrPHoer9eJ1vl09rY8hy9XmZTt82izyzXCTz183m3w9z4fP31YgTI8SheMTzr4W5-Vgb3SjHZb--On84h5F54aAH6tFvr4kBUITocoDMzYQhzPkyMffmAKFH-6MSi-AAOfdJSdWi3yzessXw9Vb7z7qDPThrg509hVat0eADvBlPnucbYYv2_z55SbdHxht8ufH1Xy2za9qlp7YaXOT4wwR_SvE5ASxQ4cSG1Ru78zZIR3dV75LesFcrbf55jGfveXDvzZPr8_wLlwNFetaigJz0AVltxiTGwy4smQnPlKzEiqjGxCqxA8IL_7dgV_1QniKqVhZXqgnv1DP_lAO6_yNugX8ivA9gehEwLZFv3yPcOm6G6CbmxTF530IY91QmxIN2L0UHO8vym8vwi-AoxPg27JrzVf_9UDoRLXvfizcNO8RpEMoDFO8Hmo15LpVDu4gT__Cq9xrDbblHK3Vxh4nTLrof7ycDIROLKGZHzONKEuJQSE1_3k9lm7WT1PnK_CjkFj41C1wpsBiN10Ngh-_7Kvx0099YKoEL4i_lJ1QCkJZZ1ruhFYBPGhXd7AlSnSdDP6_SczsFTelobVoQVf_KT0QOmGVw14YeM3UDgnNAtjWwnr1EIprY5A7KLCT6WMuL-EKRONBhfM5fcqvxrKCSnwsxQeWT57P5iKU77XgtbeiBYO2bRAOTLbYCZblTDIDuBdS71q8kcznF3_sKwelRturpkVsvCgWCCfiTsPe4AGV60vst118QsPMTy_IX3BmtpNr6OVaqF0QBEXrwLVG-dCb7TsN-HH8_1s-yOwniZeDchqXWZyxAU6j8cTPkDCZDOoppVmURpiUMU_5OErLLKqqDEPKogTpeDQQU_8OCRM6juIkTCYBn9CkGI3StBhhOs4YGYXYMCEDKQ9NoM1uIKxtcTqmWTIaSFagtMeXmsJ36IzH15qZ-phh0e4sGYVSWGcvKE442T3xHt_8Q2fpuwr6rjLIedsd4227yE9AKRqhmMNy0Bo5rZ3bd51Ml4Qud8LVbdE9w-jSJzp-DfdG_43cEbrs6FlClx39fwIAAP__Ka4QHg">