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

    <tr>
        <th>Summary</th>
        <td>
            A/F: "!getDef() && "VPValue is not a live-in; it is defined by a VPDef inside a VPlan" after 139215af
        </td>
    </tr>

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

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

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

<pre>
    One of our internal tests started to fail with an assertion failure which I bisected to commit 139215af8e33079a51c95d17a11c42603961d901. Thanks to @gregbedwell for the following repro.cpp:
```c++
float *aa;
float *bb;
float *cc;
int dd;
void ee() {
  float ff = bb[0];
  float gg = cc[0];
  for (int i = 0; i < dd; ++i) {
    float hh = ff - gg * 0;
    ff = bb[i + 1];
    gg = cc[i + 1];
    aa[i] = hh;
  }
}
```
To reproduce the assertion failure in the compiler, build the above code with optimizations enabled like this:
```
$ ~/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang -c -O2 repro.cpp    
clang: /home/dyung/src/upstream/llvm_clean_git/llvm/lib/Transforms/Vectorize/VPlanValue.h:187: llvm::Value* llvm::VPValue::getLiveInIRValue(): Assertion `!getDef() && "VPValue is not a live-in; it is defined by a VPDef inside a VPlan"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:                                         
0.      Program arguments: /home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang -c -O2 repro.cpp
1.      <eof> parser at end of file                  
2.      Optimizer                                   
 #0 0x000055cea57e83c4 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055cea57e61d4 llvm::sys::CleanupOnSignal(unsigned long) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3bf91d4)
 #2 0x000055cea5716d98 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f658112f3c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #4 0x00007f6580bcc03b raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f6580bab859 abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007f6580bab729 get_sysdep_segment_value /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007f6580bab729 _nl_load_domain /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007f6580bbd006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
 #9 0x000055cea5a1160a llvm::VPTransformState::get(llvm::VPValue*, unsigned int) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3e2460a)
#10 0x000055cea5a156cf llvm::InnerLoopVectorizer::widenCallInstruction(llvm::CallInst&, llvm::VPValue*, llvm::VPUser&, llvm::VPTransformState&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3e286cf)
#11 0x000055cea5ac8c58 llvm::VPBasicBlock::execute(llvm::VPTransformState*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3edbc58)
#12 0x000055cea5abdea4 llvm::VPRegionBlock::execute(llvm::VPTransformState*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3ed0ea4)
#13 0x000055cea5ac55dd llvm::VPlan::execute(llvm::VPTransformState*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3ed85dd)
#14 0x000055cea5a3d476 llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+
0x3e50476)
#15 0x000055cea5a4c0d2 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3e5f0d2)
#16 0x000055cea5a4ca50 llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo&, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AARe
sults&, llvm::AssumptionCache&, std::function<llvm::LoopAccessInfo const& (llvm::Loop&)>&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3e5fa50)
#17 0x000055cea5a4d22f llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3e6022f)
#18 0x000055cea6a63fc6 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/139215a
f8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x4e76fc6)
#19 0x000055cea4e785c6 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x328b
5c6)
#20 0x000055cea3145526 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<l
lvm::Function>&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x1558526)
#21 0x000055cea4e76fd9 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3289fd9)
#22 0x000055cea3145e76 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/13921
5af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x1558e76) 
#23 0x000055cea4e74aef llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3287aef)
#24 0x000055cea5b6b1ef (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >&, std::unique_ptr<llvm::ToolOutputFile, std::def
ault_delete<llvm::ToolOutputFile> >&) (.constprop.0) BackendUtil.cpp:0:0
#25 0x000055cea5b6ddc2 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction
, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3f80dc2)
#26 0x000055cea69fd033 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x4e10033)
#27 0x000055cea7770499 clang::ParseAST(clang::Sema&, bool, bool) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x5b83499)
#28 0x000055cea69fb9a8 clang::CodeGenAction::ExecuteAction() (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x4e0e9a8)
#29 0x000055cea62d41a9 clang::FrontendAction::Execute() (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x46e71a9)
#30 0x000055cea626027e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x467327e)
#31 0x000055cea63b14a3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x47c44a3)
#32 0x000055cea2e3d671 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x1250671)
#33 0x000055cea2e39a48 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#34 0x000055cea60de1c9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const
::'lambda'()>(long) Job.cpp:0:0
#35 0x000055cea5716f1c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x3b29f1c)
#36 0x000055cea60de8df clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.part.0) Job.cpp:0:0
#37 0x000055cea60ad94b clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x44c094b)
#38 0x000055cea60ae459 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin
/clang+0x44c1459)
#39 0x000055cea60b8389 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang
+0x44cb389)
#40 0x000055cea2d6af1a main (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x117df1a)
#41 0x00007f6580bad0b3 __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:342:3
#42 0x000055cea2e395be _start (/home/dyung/src/upstream/139215af8e33079a51c95d17a11c42603961d901-linux/bin/clang+0x124c5be)
clang-15: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 15.0.0 (https://github.com/llvm/llvm-project.git 139215af8e33079a51c95d17a11c42603961d901)
Target: x86_64-unknown-linux-gnu
Thread model: posix
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzlW1tz27YS_jXyC8Ya3i8PfpBl-9SddOyxnbxqQGAp4ZgieUDSl_76swAoiaCk1GkaNZ1mFFvEbXe__bBYgHBW8feLuxJIlZOqk0SULciSFqSFpm1I01LZAidtRXIqCvIq2hWhJaFNA7IVVamLOwnkdSXYitySTDTA-i6sWq9FS1w_9dyQ5gn4vhOnNHRZGnI3pq7LAi9y_DRyeeq4U_K0ouVzo7pOAmcpYZkBf4WiIHklSbsC_F0U1asol0RCLaspq-uJP5s4VxNnNokc82ET71J9dGleVLQlE29G6cQfl2XZfhlj2zIEg3C-fXypBCcAEy-ZeCmZxH0xIaZvnpOJf0VwzPDSmYRX236bBsulboAC9hugfTiuEih0Iwcr9de50YAYm8RI8mbo1Ur3QhXOtRhvpkcYNBsoJ9RgxLU1IJZ6R5oghliHpbrlajWonMRXvRu2Xzb-MI9PlfEZ7xhoX-5zSJS6AmlTiwLkxJuTrBMFN82z6kXVcTAsrOpWrMXvVI3QEChpViDrCvGsRhfNPi36Ry9AXa8n3k0jkSg3Xd20Eugav36Up-eFKLs37JCJEn-ygiIfzxk5v_N2tFRwGYm6HtVBSG9W1Rr5c8PfOyw6oEJRvKwXrABaLpai7QvUL5HhzydJywapsm7w4QtOs0qK39V4X-5RxhdadDBFn8zcJFbydF-EwZ_pKkWKQdG9KdQPS2g_iRe4LW8f-qaK4mqM2dZJCkHPxZZXkG-mgBfhB395_WhENKSsWkLRDy9wjvAoFreqmEMuSnRQ9o61X-5xEHR3I9Cb6hHVx1EmXqy5AHxqoLv_dD17vCZNl6k4QpENeuJXslUxYtW2tfazd4MfxGvVZVMkzwA2_HWODvkvYoWPomk6UNhhCOMonhUdN1xkkjYrklH23ErKQDGv1q5kgABw0mBsNMWqJzK3YoKqKCe7kjRMirrtVX5scRDCu7UKTOSj_0xfZ2qe7mW1lHRNqFx2ayjb5oPs-UsJbFRye5UwEEGVT_xrUlOJlCAYdAChwGUjR4cds8jru9-ZyYr9PooF2us7xHlz8F8YMqBhDInPAgQHo6RG-Um56lEscbn6Bd2iI0aigjQyXdHTVDX9IuHo_9ux3dHYiEwwmB7Ne2O-zNVk7Oq70oyGEjqk7VJRuaiUG9Q0SH6wczAYO29-lqeopJqYWys82wo34mlC5orMD8AwXsr3MT4IntLZajOvcNV_aw8D5fci4jwKE9f1cp85ZLGQmB9UEhay7e03IeotiRZRYGw4X5adqajbFaLAp001dbQtboCjWJYEQzFOxpjjZ0RSzCYU8_UyoCY5DsbOm9_yy1-fto_e1HcV4r2DbqZT9fTecKjVZO9K8WYKXrQ2Bl099BTX-lnoqpC50yS0NaFZEqZq9dGWfkyTlhs0dC8tJFFC4p2QaCwkRqdgcF0YvRcNLNXMX7zosPpBuehbZT9mBHzdLBk1okNHRfJkJzs-JHtRFgvVccGrNcWF-LtEprEikR_sZCa2zIw7TvQB4jBFmcjQP8AuFmVSi_w4jyKHWivcdr3EcNHuljoUu78OqpAxJ9u53U-TU01t8AJUfmudik_OyLowYvnAutuyBPmpquptHiBNxSuuqeWcFsVtiQp2TC3elsWbOr16zw-kBAaKYfnnRsWOveYjfFWDU0KWICIWZHZMpyxhYWIpfEkbwS6Lij2bEngD1inNk6-ZNTupWTxDrS2z7CBPMw40sMx6gCU6-We3y0G1Lbv8kbvCkHPLLpUV_rz2JKiuZU9g2-PzII4G9gwnq961KPvKzbTtTTSZ8MDM6wLUQjCvOhWRxhFqvofXeJYeihPjNlfVWpQUa58knBTHPu1FNEMHwbLQDG00A-Zw7wiacI8ZuSnuU3ZVa8FoCk7LkDBHlS2borFNNHT-2CbcY9yu68KyB7OaPrKPfPnIaEHl9UtVdAfrlYzbMq_2Kp5wtwHtdk4dbDMiyqhWB6AbCf_roGTvXxHySWSSyr7FaLG5gjXmqsAvBW57xt1nswcwaDZdcageN3jrWtk9p2y10RDTMVOdb0Dz5zYgM6ZIo_QhrDJLIzlAH01Q_3pP7N3gKOIB9ZfP17hfbQ_MNNzZqe3SY7deDwE4KSmRcxYp4xEpueflHyLlxwg5w6T8vRHNb7SkSxXt5gc69aCeEIfIQTMtHJIhDhGN_JwNwzeHloqidyPC8FvFoThszd6Es_EbMQIwuXoBbnCC5k-hRxSCP41f-hPVP-2dAOIIwbe8YyX72CAJLe9oj3zNkn8-qt_Bdi_JDJKhjapnbTIwgwlD76_g_I_zxk87dwymf7-v3TBMQs_2sjuaO1HO04E16NWugKdqo7Py3ozTGkPWYVxMh2_ift_lb2B-isZaaHhjzkP8bZzfmD__IIZ_FWe3GB5n7Gk908eU72QrxEbu1kH-iK4BhfwDweWQW_5RcH4n0WMKVkLj2fvRLMpcxBH1oWVVvq-rriElXUNT6xceqVFfJa7qnc86K95_gaLebE8funKY5d6LGlAVtSPfvN7CzyVlz1Dy2TbGbzPvrhS4K1jUrQ2WpK-L-lWKFhYbKAadOOQU0_wFzj9Qx3df7bhZH6KPyH2qquKua-uuvRGGMkOhBsFjokd9B3K1s6d6A4Hb0Foddaekx-RzK4r983XlpXDkJc6ZRwagKo_0gxixNuZXgi7LqmkFa67LpXaJhmDQ5BegHOQjUMlWd7V5X7rZ5oyazjHY_QfKP2hldnF_0OgTfjvUZLBVbaUolw-KtfuhtN8YHmVXj9_fwrHTzeo8cZAO1qy2zhAiXN0c3z8A0xwh79ab6Wve_-jNfaEn8OdSjIg0e3zq3wOdNnIF4DpogmWjtSWN49gJ0nRo4716B4kK2xY84ta7J1mGk3T3-2S2hFnio6qWLcnIX1lKkwNTrqe1mfLmLHATR5OTesMBVNCywNp6RR4PXGp540Yq3mxn5tCEEysfQYy6DZW33yFHOIoXgw2_uWyi3ojQksFhDxy39rRzJYpxcoBloJXcR37mBtSKB70pOztfKkb3zdrD4aTnUkHMAtTbMszK0z3weRS7hDF3od5PWmnaTEr6rtYRf85WVG6Wm1m_YbTLsGBwR-BUuzIvdFB9yz5_ZF9Kg4RsvDV3n3ToGlj5uKZFYU6S9HHwIWM1GbkULyAPZhu-lRNGDge0ROMxWIA3x6QLqSHVtZsbQX2izFAVdVtmkavD1AGNjOyeUnMXWaWOc8cx4aDr7PPUSr3LHxbusoXdUcB2GV8s2Nub65qHTL3lU2u2UFpplKzGqmDRSqpOmPvq0XBonZokav-7qTciZ7tFRdPHgG_Q1T0nXlzQdcZxIYp3mKHF_V2RX6vssGPsNDB2o9xlA58cuq-xzcwfaQ7Fu4Xr1314yksrXoqWWMSPxhxMeE7-5RzSW4eaytbsGo7SJLaxozwNsqPY6ZBO9xblDaBW_B91VA2OZfZfaTrrQ9DWppMsHgFzEAaLY8kIJwjC9FtxQic0x0HC2k8CjTyyt9kL1lti1FQoTvTvbz-Kq7XP_OHw9jjaILuIoQWynRg6mPwmR0G-Gny3UpIDucgx55wW5BOwt0fSwJshekN4Ayt19XhEc5eS_nLWabIWN-Yo01Jqk25uLo9xJ_PJYqHuai30XwssvuX6GGvURS99Yc98NW3VOPoimR946udO_DgpTMMMiBF8ulwuYCh1i4quOXdDVJSAlPrQ3DCO5P1eQf8lhGKaud1sLrDDm2jNfXYX0zJ1sbQBcv6ibjY3oC7D7xL1oSSC9G3UhWw3nDpTR3X8tovQ0-U3_E3GVrY581Gm9Tf1uvK5rF7LwY09007f9CRrc2o-I3XViLfRTfwzfuHzFBPes1a0BVwoxW8m-o6z96PvmBOatyC39p91srj48xfJw8Dz_LPVheslcR64MW6e4wzABcgg8EKeQkCjLE7PCppB0VxMwkvUoYRXoodQ9oZXZ-LCczzP8Z3QiXFDF0_BA56neZ46XgJJxCeBAzitiqnSY1rJ5Zm80Cpl3bLBygIXomZXSRt9Rwi0OByfdu2qkhd6SpxpwRda8f8DRjt1bw">