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

    <tr>
        <th>Summary</th>
        <td>
            "PHINode should have one entry for each predecessor of its parent basic block!" with loop-fusion
        </td>
    </tr>

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

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

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

<pre>
    llvm commit: 6663f3470417
Reproduce with: ``` opt -passes=loop-fusion bbi-75970.ll -o /dev/null```
Result:
```
PHINode should have one entry for each predecessor of its parent basic block!
  %.lcssa92 = phi i16 [ poison, %middle.block ]
opt: ../lib/Transforms/Scalar/LoopFuse.cpp:1726: llvm::Loop *(anonymous namespace)::LoopFuser::performFusion(const (anonymous namespace)::FusionCandidate &, const (anonymous namespace)::FusionCandidate &): Assertion `!verifyFunction(*FC0.Header->getParent(), &errs())' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ../../main-github/llvm/build-all/bin/opt -passes=loop-fusion bbi-75970.ll -o /dev/null
 #0 0x0000000002e86fc3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (../../main-github/llvm/build-all/bin/opt+0x2e86fc3)
 #1 0x0000000002e84cde llvm::sys::RunSignalHandlers() (../../main-github/llvm/build-all/bin/opt+0x2e84cde)
 #2 0x0000000002e87346 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f9b5914e630 __restore_rt sigaction.c:0:0
 #4 0x00007f9b56895387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f9b56896a78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f9b5688e1a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f9b5688e252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000002d672d8 (anonymous namespace)::LoopFuser::performFusion((anonymous namespace)::FusionCandidate const&, (anonymous namespace)::FusionCandidate const&) LoopFuse.cpp:0:0
 #9 0x0000000002d60fc9 (anonymous namespace)::LoopFuser::fuseCandidates() LoopFuse.cpp:0:0
#10 0x0000000002d5da81 (anonymous namespace)::LoopFuser::fuseLoops(llvm::Function&) LoopFuse.cpp:0:0
#11 0x0000000002d5c53d llvm::LoopFusePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x2d5c53d)
#12 0x00000000031f851d llvm::detail::PassModel<llvm::Function, llvm::LoopFusePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0
#13 0x00000000026921cc llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x26921cc)
#14 0x0000000000afdb8d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0
#15 0x00000000026964ae llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x26964ae)
#16 0x0000000000afd96d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) crtstuff.c:0:0
#17 0x000000000269147c llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x269147c)
#18 0x0000000000723479 llvPHINode should have one entry for each predecessor of its parent basic block!
  %.lcssa92 = phi i16 [ poison, %middle.block ]
opt: ../lib/Transforms/Scalar/LoopFuse.cpp:1726: llvm::Loop *(anonymous namespace)::LoopFuser::performFusion(const (anonymous namespace)::FusionCandidate &, const (anonymous namespace)::FusionCandidate &): Assertion `!verifyFunction(*FC0.Header->getParent(), &errs())' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ../../main-github/llvm/build-all/bin/opt -passes=loop-fusion bbi-75970.ll -o /dev/null
 #0 0x0000000002e86fc3 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (../../main-github/llvm/build-all/bin/opt+0x2e86fc3)
 #1 0x0000000002e84cde llvm::sys::RunSignalHandlers() (../../main-github/llvm/build-all/bin/opt+0x2e84cde)
 #2 0x0000000002e87346 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f9b5914e630 __restore_rt sigaction.c:0:0
 #4 0x00007f9b56895387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f9b56896a78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f9b5688e1a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f9b5688e252 (/lib64/libc.so.6+0x2f252)
 #8 0x0000000002d672d8 (anonymous namespace)::LoopFuser::performFusion((anonymous namespace)::FusionCandidate const&, (anonymous namespace)::FusionCandidate const&) LoopFuse.cpp:0:0
 #9 0x0000000002d60fc9 (anonymous namespace)::LoopFuser::fuseCandidates() LoopFuse.cpp:0:0
#10 0x0000000002d5da81 (anonymous namespace)::LoopFuser::fuseLoops(llvm::Function&) LoopFuse.cpp:0:0
#11 0x0000000002d5c53d llvm::LoopFusePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x2d5c53d)
#12 0x00000000031f851d llvm::detail::PassModel<llvm::Function, llvm::LoopFusePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0
#13 0x00000000026921cc llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x26921cc)
#14 0x0000000000afdb8d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) crtstuff.c:0:0
#15 0x00000000026964ae llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x26964ae)
#16 0x0000000000afd96d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) crtstuff.c:0:0
#17 0x000000000269147c llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x269147c)
#18 0x0000000000723479 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (../../main-github/llvm/build-all/bin/opt+0x723479)
#19 0x0000000000732704 main (../../main-github/llvm/build-all/bin/opt+0x732704)
#20 0x00007f9b56881555 __libc_start_main (/lib64/libc.so.6+0x22555)
#21 0x000000000071c0e0 _start (../../main-github/llvm/build-all/bin/opt+0x71c0e0)
Abort (core dumped)
m::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool) (../../main-github/llvm/build-all/bin/opt+0x723479)
#19 0x0000000000732704 main (../../main-github/llvm/build-all/bin/opt+0x732704)
#20 0x00007f9b56881555 __libc_start_main (/lib64/libc.so.6+0x22555)
#21 0x000000000071c0e0 _start (../../main-github/llvm/build-all/bin/opt+0x71c0e0)
Abort (core dumped)
```
[bbi-75970.ll.gz](https://github.com/llvm/llvm-project/files/10020733/bbi-75970.ll.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWttu2zgQ_Rr5hbAgUdbtwQ9uWqPFtrtBE-yrQUkjm1vqApJK6_36HUq-SXGSJk67RaFAsWVxOHNmeGbMIZxU2XYuxF1B0qoouLa8BQmCwMu9WejM3NBy3lrO4jPUssqaFMhXrjdGxgqc7iJVrcm0ZkqBsry3oqrqad4oXpUkSfg09OPQsYUg04pYdJnBHb6WjRAHBXsLqhHGevdxMHr9_sOfVQZEbapGZGTD7oBUJRAotdySvJIEWLohtYQMUlAKH1Q54VqRmkkUIglTPCWJqNIvFnU7pQQB-bZIlWIxJYid1BtOuBsQy39D6oqrqrTolZEqeJYJsNv5OPq2U4Cem1DYNrokeIKvt5KVCuEUCj_cpEwwiTcfMSbLRoGd1jVOcEMamHkm6sZhb2EE0MzCohErq3JbVI0iJStA1SwFi8ZHMaNHdh9rkMbUsg02Tk2rUmnyhI5O-oqVGc-YBhQPjI8vn2vGyAJXX2qz5mbJqHsHkufbZVOmusOGzi2vHPs9sAzk1PLerUFft0vTDsZdnAOQUu0f4BWSnHEBmb1jwcd3i5t3RDUJEpUwkjRrIqGupCa6Ihuta2WA0iVea-Rpk9hIarM4JtLd2xSJ_A-kaHbJlWrALBRBjwgvU9EgxfQGSCqZ2iBn0i9aYgB25m80PiBZU9QHmjo4FF_Lai1ZQZhcNwV6pA6kaF8KxstpB-cIJWm4yKYM0wDvOUZo-dI06qhsUc8hzjdn_0chCvLUO-GY2qru5lryUre-3Mp2daOjkGRfV5XSElixIwY3KxQbZrzEI4u-cb7tsJgVPYB1B2BnKYb-DNjPTXnD1yUT73GNBOzZcSkeY66Hhw7whN4sID3LaHEXi-6x2mWz0_4fFHk7RWEeJ37sziDAhVmtJChdSVghVRVfszYt7PT-9Nnp9CCKfS8KiWRcmWyLujoTzLr31FaVHbQueQHK9RzyB4oCFkaEJSZXHlUUolxPUdBXFIHLAnSItRm_Mvm5wuL6ODya46Se1nColfr0CRUo0VMR9ZYsC0KaRU9VsCcq6DPrX1s0d3ny4qkxGXw9DBgRD9x08jR-pptYR-Bgep9BD1s16dkvJpmfsch9gVXzSPUqzPE74QnfDQp3gCL1vWzwtWkmXyMZd_WrKR-2dnUydYEZvFVcfWIlWxvEV2cmee92KC-qNh3sA3WNX71q47l55LunfmWgMa121Rp9-4RbH3EeYs-pXjx6I9dYf0DeQdb5Depl0TDXDwxzKrXSTZ4PC6MJmdejQhBTN01PHTRheszIr-jvRbTqQtCj1ew0Rg7LsyR6DVr9sNj-ZhT1BxQNZux0T4PhbgTcVnulJqyLjNW4LzgPuZvwLMC7Ka_FMONBj2HBkGFx8DyG7X26-s7AvBZFjoF5iCCvEO3HyBEOyOHOwu-pX-fi9b_7eSGrjOs9VvV2ck6Iu-AwNtDGrn_s-seuf-z6x65_7PrHrn_s-vsGx67_TDx-s5Zq7PrHrv8XWLKx6x-7_rHr_0ldf3HwwITnmtcgeNlvWG40djPrz5Cfo9Q9J2-xRQP9iaWbVs_i3OhHnkgmtx_KvPpQ1OK-VFWJvxpdN3rJxRklFw0_4M5CSrY1T09X5Sg7LKVnxdsQimbNy3vyuDYrjcC6Tx28P3iZPSb1t-nwOci9XGJGvvv9Mg51DOlRKO5TyKOhMyNG7WWGWj2nhqgzaFxc3_exHTLNykpphi3R3urDrQzFOT2lbh-9mzqATWOr7jL8raaDqcW-_UuxFW0PMuC4Lx2TbUy2Mdl-UrINftRm-W9OD_ns9b_mjJlGzz7SzJHn5kTTxT0GLoxnQA4U7yFMYO4GQeTHs8AJJtncy2IvZhPNtYC5RelrH7lT2v5ikJycbE4aKeYvP7b1Y4d6k808zCg4iceyLMXNQ5wzYAHNY9fzE3BmXjwRLAGh5hhlRFHCV9KqwHuM8oTPqUOp67qB63iO49uexyBPojQGyFkGsTVzAKkgbIPDruR6ItufSU6TZq1wUHCl1XEQM5-vS4DWHOpnjd5Ucl7wLwzEphIFlJPW_rzF_x-IaniC">