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

    <tr>
        <th>Summary</th>
        <td>
            LoadStoreVectorizer.cpp:221: [...] Assertion `IM != I && "Unexpected cycle while re-ordering instructions"' failed.
        </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: 043789519a1
Reproduce with:
```opt -passes=load-store-vectorizer -mtriple=s390x-unknown-linux bbi-108574_2.ll -o /dev/null```
Result:
```
opt: ../lib/Transforms/Vectorize/LoadStoreVectorizer.cpp:221: void (anonymous namespace)::reorder(Instruction *): Assertion `IM != I && "Unexpected cycle while re-ordering instructions"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: build-all/bin/opt -passes=load-store-vectorizer -mtriple=s390x-unknown-linux bbi-108574_2.ll -o /dev/null
1.      Running pass "function(load-store-vectorizer)" on module "bbi-108574_2.ll"
2.      Running pass "load-store-vectorizer" on function "func_1"
 #0 0x000055e97bd23d76 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x46e1d76)
 #1 0x000055e97bd21305 llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x46df305)
 #2 0x000055e97bd24bc9 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007f99f6ba6d10 __restore_rt (/lib64/libpthread.so.0+0x12d10)
 #4 0x00007f99f454652f raise (/lib64/libc.so.6+0x4e52f)
 #5 0x00007f99f4519e65 abort (/lib64/libc.so.6+0x21e65)
 #6 0x00007f99f4519d39 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d39)
 #7 0x00007f99f453ee86 (/lib64/libc.so.6+0x46e86)
 #8 0x000055e97c8c62c7 (anonymous namespace)::Vectorizer::runOnChain(llvm::SmallVector<(anonymous namespace)::ChainElem, 1u>&) LoadStoreVectorizer.cpp:0:0
 #9 0x000055e97c8c066b (anonymous namespace)::Vectorizer::runOnPseudoBB(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, false>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true, llvm::BasicBlock>, false, false>) LoadStoreVectorizer.cpp:0:0
#10 0x000055e97c8bc831 (anonymous namespace)::Vectorizer::run() LoadStoreVectorizer.cpp:0:0
#11 0x000055e97c8bc1f2 llvm::LoadStoreVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x527a1f2)
#12 0x000055e97da7095d llvm::detail::PassModel<llvm::Function, llvm::LoadStoreVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#13 0x000055e97bf5a135 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/opt+0x4918135)
#14 0x000055e97d1ef8ad llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#15 0x000055e97bf5ecce llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x491ccce)
#16 0x000055e97d1eb8cd llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) PassBuilderPipelines.cpp:0:0
#17 0x000055e97bf58e55 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x4916e55)
#18 0x000055e97d177f0c llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (build-all/bin/opt+0x5b35f0c)
#19 0x000055e97bce5bf7 optMain (build-all/bin/opt+0x46a3bf7)
#20 0x00007f99f45327e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#21 0x000055e97bce36ee _start (build-all/bin/opt+0x46a16ee)
Abort (core dumped)
```

There is already https://github.com/llvm/llvm-project/issues/37865 about a hang in LSV, not sure if it's the same root problem here or not.

[bbi-108574_2.ll.gz](https://github.com/user-attachments/files/21056183/bbi-108574_2.ll.gz)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWNtu4zgS_Rr6hbBBUdbtwQ9K0sY2toMJOr3zKlBkyeaGIgWSymW-fkHJjmXHuXRmencWSCCDIk-dqjosisWckxsNsELJBUquZqz3W2NXrbxjoLZGtaBntRFPK6XuW8xN20qP4hKTZZzlRRIVLEKk_A6dNaLngB-k36K4RKREKRn_TOfxvGPOgUPxlTJMzJ03Fub3wL2x8g-weN56KzsFKL5ycUEe572-0-ZBz5XU_SOuazmPSJ5ky4oulMJzgxFdC7hHdK17pZ5tDVxcr_wJB0RK0w3EFwtE10rWiK5_WKZdY2zrEF3_vieD6PqbYeI2UHwetAvedSguKY0CyL2RAiOaM230U2t6hzVrwXWMA6JFsB2XFowVYBHNv2rnbc-9NBojWo4zcOkc2HEsJV-vMQrQV_grRjRFNMWI0n9peOyAexCYP3EF-GErFWAL8wFa6g2WB2yHKEU0ww2TCsQCkfLm25fy9gt2fd1Kjxmu-w220BnrsTd4633nAle6RnS9kX7b1wtu2hAfdb9_zDtr_g3cI7qWzvUQYoWZFlhqrnoB2G8Bc8vcFteM33nLOATbt57xOyz6thtTQRaIFDfWbCxrMbObvgXtg3lc91KJOVMK0XUtNaLr_4ZiSBkFRt97rUMcg7UQ8qbXQzARzc_aDcmjFBuNWyN6BWHNia2QBlLSc-ivQA54e8t7FlU0AmFEY4LJIyGEJAkUWS1oLLIUD0kapOae3Pjjxkrth8j_sIMW88Mkyx4q47wF1g4Ku8RSe0SLoOOzKUD0gjwuU4hElga3RyrRCZUoJsk5Kt97fSs3mql_MC0UWIdo_gFroolJcrBGT6wta17gI1xE88GPS-zkRurGVH7YY5fDJh23226F221iMvyPBuKdgawpiiatWSoigqvKwpClyno88A4VI12Oz85vLTCxcGZBBtYRFRE5cF5OIZfJMk1ogy2TDl5i8YCSjr5DQpsDSnKMEhWQJpjV5hyjCQqNIJ3ELz1FEXGBK62qoMRKmJZJveBGiQV5B1bExQE2O4aNAfL0bedSyCciyqdp5TlPKc_eq6eHWrzTc69_05dbJvWRzG9bptQ4F8WX72AOy78oaINeoh7FX4atUeDXT4CpeIoTN0ia1p9y48ZBL8zFxZEnUknnK-nBMm9s9VDVMhTMy9MZAjyTahzRRkBluvE4mE6dnEHBV297CM-GKQeHzXJ4cVh5wZzkF8rwuyE8kzXjj3Hw_5L2R_IcSh45znPN8zj6RJ53FfBjNqNTm1FDJ-6dAblhzk1tHSavnw-19DhIpWbqyUl3zTTbBKaXZxY9b4o3S3dCMxY1dNzjwYGj0i1YRopETExP0x-YXxsB6jyBI8qvOf4pv8LfLwxYIHYRInY2w_HR2dYkLIqnJ-kQlLfM_B09fvt0L6I8ipODRJZHEomgydlfIZFfFrm_Y8QnGruRHSip4fQ7J4Q6OREbcA4Tm9fDx-wPs8cPqKVg3XCKnmM_Lvgp7rslH9YK52M5HR1IT7RS5_zntLJnfPlBtz_h12up_guC9cE0ZydpziH5SE05F5v_ucvv6SOFZFJL8mN9ZFlD-MSw7Yfk7mN3_Mnow1X6OzTnxPHChR_MbsBfM74dcMpzb7_J2jL79FU35mvbqZezjFG_9b7r_VqqMyB_6vUr7pTWsqcwOo35EBPVb6R-Wd8O850X49jz7Ti-3LdAjrF2Eh0zeK5qms5X3pjdTh29-KfU4q1Zv4OVjQS7n1eHNz_9fO_7pY6ThvCDoI4-7msOSd1k2HT-mkn93i2WxXWTPUNRcnJdohkkuKrCFalynllftTvQVy9QMcvgoHYanZCLUwA8Yr3LLUphV1fL_XWSGwtDrwbEzsakcYZI-WMLFrB0mKlw9X36E72jOMvHi2zvMcNbNvSw8Lfb30OmtPHY9cFUg6VHNHNDe8mxFrA1xuPOmlpBiwc-xoYFi5EiSi5O-jCLzR8ouUI0f4Ns78DOmfeMb8d-FF03Ug1EaUSSNMrjEMKXwLSYiVUsirhgM1hFWRKlNFsuk9l2RRrREMhrHos8jZKGQQMZcEiiJm6ipJ7JFSU0IRlZRlFElskij5KUZLxpmiaDlC_RkkDLpFqEIC6M3cyG8K2iZVgzU6wG5YaOLaUaHvDwFlGKkquZHTq187rfOLQk4ablDjBeegWrd9ubKLlYLBYoufrlTcpZb9Xq82LaBeR-Rf8TAAD__28QA_c">