<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/174020>174020</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Assertion `I->use_empty() && "trying to erase instruction with users."' failed.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
TatyanaDoubts
</td>
</tr>
</table>
<pre>
To reproduce run opt with the test below (-passes=slp-vectorizer):
```
; ModuleID = './reduced.ll'
source_filename = "./reduced.ll"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128-ni:1-p2:32:8:8:32-ni:2"
target triple = "x86_64-unknown-linux-gnu"
define void @wombat(i32 %arg, i32 %arg1, i64 %arg2) #0 gc "statepoint-example" {
bb:
br label %bb3
bb3: ; preds = %bb3, %bb
%phi = phi i64 [ 0, %bb3 ], [ 0, %bb ]
%phi4 = phi i64 [ %add39, %bb3 ], [ 0, %bb ]
%or = or i64 %phi, 0
%trunc = trunc i64 %or to i32
%or5 = or i64 %phi, 0
%mul = mul i64 %or, %or5
%or6 = or i64 0, 0
%or7 = or i64 0, 0
%mul8 = mul i64 %or6, %or7
%shl = shl i32 0, 1
%or9 = or i64 %phi, 0
%trunc10 = trunc i64 %or9 to i32
%or11 = or i32 %trunc10, 0
%or12 = or i64 %phi, 0
%mul13 = mul i64 %or9, %or12
%add = add i64 %mul, %mul8
%sext = sext i32 %shl to i64
%add14 = add i64 %add, %sext
%xor = xor i32 0, %trunc
%sext15 = sext i32 %xor to i64
%add16 = add i64 %add14, %sext15
%shl17 = shl i32 %shl, 0
%add18 = add i64 1, 0
%trunc19 = trunc i64 %add18 to i32
%mul20 = mul i64 0, 0
%add21 = add i64 %mul13, %add16
%sext22 = sext i32 %shl17 to i64
%add23 = add i64 %add21, %sext22
%xor24 = xor i32 %arg, %trunc10
%sext25 = sext i32 %xor24 to i64
%add26 = add i64 %add23, %sext25
%trunc27 = trunc i64 %arg2 to i32
%add28 = add i64 %mul20, %add26
%sext29 = sext i32 %shl to i64
%add30 = add i64 %add28, %sext29
%xor31 = xor i32 %arg1, %trunc19
%sext32 = sext i32 %xor31 to i64
%add33 = add i64 %add30, %sext32
%shl34 = shl i32 %arg1, 0
%sext35 = sext i32 %shl34 to i64
%add36 = add i64 %add33, %sext35
%xor37 = xor i32 %arg, %trunc27
%sext38 = sext i32 %xor37 to i64
%add39 = add i64 %add36, %sext38
br i1 false, label %bb40, label %bb3
bb40: ; preds = %bb3
%phi41 = phi i64 [ %add39, %bb3 ]
ret void
}
attributes #0 = { "target-cpu"="znver2" }
```
Reproducer: https://godbolt.org/z/fWzdn43sd
Stack dump:
```
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=slp-vectorizer <source>
1. Running pass "function(slp-vectorizer)" on module "<source>"
2. Running pass "slp-vectorizer" on function "wombat"
#0 0x0000000005a65f78 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5a65f78)
#1 0x0000000005a62e24 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x0000753390242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x00007533902969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x0000753390242476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x00007533902287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000075339022871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x0000753390239e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x000000000378f07f llvm::slpvectorizer::BoUpSLP::~BoUpSLP() (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x378f07f)
#9 0x00000000038861d6 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (.part.0) SLPVectorizer.cpp:0:0
#10 0x0000000003886c5b llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3886c5b)
#11 0x0000000003036a7e llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3036a7e)
#12 0x0000000005841e31 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x5841e31)
#13 0x0000000000f19f8e llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xf19f8e)
#14 0x00000000058403ea llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x58403ea)
#15 0x000000000097dfce llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x97dfce)
#16 0x000000000583fda1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x583fda1)
#17 0x0000000000988280 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, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x988280)
#18 0x000000000097c178 optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x97c178)
#19 0x0000753390229d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#20 0x0000753390229e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#21 0x0000000000972c15 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x972c15)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1v2zrS_jXMDWGDIvV5kQslrs9bvC1O0GTPXhqURNncUqJAUvnoxf72BUnZkmz1NOnJAXYbJLFIzjwz88yIHMlUa75vGbsG0Q2INle0Nweprh-oeaEt3ci-MPqqkNXL9YOEinVKVn3JoOpbKDsDn7g5QHNg0DBtYMGEfIIAp6uOas00IBstutUjK41U_BtTAGeA5ADlIEbDL8oBuYGfZdUL9nEDAdlAgJM1wFvFrKlqLQTACUC5lr0q2a7mgrW0YYMoPhfFAOWGqj0zsKKGCvoie3MUZqsGkJytOpwgQHKC3T87DOZDexWH7t-Kny4CnAKSBzhd1Skarlo3FR_V43B176a5nV51-LiQDn8E-zU8c9Uo3olTTM9pvIvDVd9-beVTuxK87Z9X-7b3KgDlFat5y-Cj5BUEIXqSTUENwCknGAIcUbUH-BaOo8AN43AYYoAzCDBBcF9ae9pQwzrJW7Niz7TpBAMYQ5DcAJQXhU8ZhIWCghZMWJCiIN4Te0Fy-KYfm_FOsUoP8To0fOuvnCmAo-7A3bL9dJ5HNxCdpAgE0caNZtNudgQILxBs_FVFsrcASeVgpDoy2B24FURHAaP6tnQy_moQkwoaaZNg5dw4-gFQ0wsnYT9PIINPUkWjQ_EUCJ0w3FqyvDbgp5cG4pOF5CioD94R-2mryMEEJxPZawgJ0BIl2YQTPxMEJzRfr4P2DFGqAP-YvIBcRpedogtORmlVOUH7OQg2vRgELUknHtiz3zvcxeCfJcUGEYcTvCA8R6RVNSBa5aPo81BNz0O8x5JzQU_NBtGF4eehorzhwW68YDcIJ5aDaJLVIJnl1U_OaLTq6QwzWMhtdplbrzjPbtMLjGY5mRUrrSocLGQiOG4HLsApKxgvpSNILhOCyQIxOJgQg_EkKTicpWXcRCcFOfVjMTs4XPBjKUGYTP2IZtziZIFbtcdn1FqUdIE7jEbu8Jy77HWlTNCSx-nU42zCHAkWmAtm1GVTN8hlCj3KpSNLKSRo4shpb9UHQcLz0j76McscucycV740v5Q5Ms0ciaY8JD-oINfFnFTTRRYWCplkS27EUzfS4_nMA1hToZldnJzVITqbOB3eoW1jlg_kyTEavPYctTqKGdeYWBPJxhuixihe9IZp33Y4M4mFwb4BWpWd627IBmD8rX1kCvsWZHPWLX459qDKOn4wptO2P8FbgLd7WRVSmLW0vG-_Abyt__mtakOiK-8GQPm9oeVXWPVNd9mJojVA2Z2Se0UbSNW-b1hrtCMIb2VnAN6Wsum4YGrFnjshlW1pt6Wg7X5lO15luGz1ymb7K8DbgrdeEa6khaBdZ8e96Xqz1nB1D7_XKENAbn2_C8gHgPLAevalb1ve7qHVsczVfVtagwCnl202xlC2sHF9NXTMTgDdzoeXMM-BHMrRkBU4tprDjUcQRM_o-BPROKqTFArxaPtsQHL9ov3FneKtceQ_KFoygNNRSNGnndRGMdoA7Aqbt8a3qOlfZB7gG_Q8uAX8tgUwCc6cxgyH8J7vWyr-j7aVsOCp8-EWar7nbS13BuDcjl1p28ts0NDrsrPFhNyfN4AHA0lESIZwiCN7DLpoBC8A3g4d_qSztwvlWst17Hx2KqPHZA6YxVldws4cFKPV7isX4m3oTn9ED8_dDZMY7rUL761uh0k8AkdzYJwmNYG0kMq8DdYpjrDxBWxQvBkwKEbAZA5IMpbFbwN0KiNgOq0wkqQ1SurpbSG6yV3mpm7kP7r7T3d-8O_jyLrwbvfB4MfoZTbzMk3joIonXt5_uvvj5OUd1cOtrPr2Y9OJ2S28Pe1F7v6dYJRUUPXhUYrer-fz9Qe3_T8o2upaquZjW8vvyHzihaLqZVEiz78w3QujL1Y-Sdktqmxkw1tqpHpQjF0Cat03nfX4lpaHy_UNa2hbseqGL9j8vTO84d-oVf_CGqq-fmi4MTZV-ZDOdUeVWSO3i0xZPttL7F6FzpNURsWrkvS6BOUtFS-a68-0pXtbjLcLSvbMiN-zEn0YvhJtkLMdmSAS04RNnKyYoVwMJwnV-rOsmFh2dV59F-T8VOz293-AVE_bSCqeHXNpGDASTJx0RP6Zg78wVwMbI1dkyhWqg6xO36MA_zaOf-HcePLH1IRnZYwIoxMf_bvjB3n0x1KeV7QzUi1H6xXeFOug8jdUoQ1mDDWaVWGWVHX5tio8xnb7SoJ-goHvFdF_D62et5HVeF5ApK7oa_bBJS5_FYoGFkaOknnlpSlO0cRF1buyueMdE7ydP77dG8Xb_RdWL5XdRbC-mftMy4PD-VGr5zvNcykpxe_uMXrLxQLIX1r-Tji5UvTFzk6z4zgR_Z63l3vyKK9N5edOT-zk1n91M6XRYt30XFQ2j-5RYmGnl53ZGSmHPcBH8f-8rf5M6g-meM2ZOsoVduWnP9_vLnU1NlZgerb3lUGSQtmZz5S377czWNTRZnb2IJlV2Ruf053KCRCjc0AWIrjbWZ2dNlSZXTOG82oTLJyYCM54wmUQQQ_-fjRZUG_y-D7MMOUemFjlv_X1bwcAyeH9x9_uP_z2B0D57WASKmZ61TJb9jAg2fQ921V1TaqMZPSKXQdJnAQ4zYLs6nCdoTjMUpSFRVkwhElZZ2WcsSxJi7IOq-KKX2OEowAThAOUkmydBBFKMxrGJSVZQTMQItZQLtb2TlhLtb_iWvfWTIgwunLvP7X7phvjlj1BtwowBtHmSl1bpVXR7zUIkeDa6BHGcCPYdX6kDYIYfVwB8qHXbMeazrycntNjgGP3VlO98HYPjYRMUc0gb7VRvX-L5ujrNVN6bY3jBNaUC1atr3olrs9eaXJz6It1KRtbFvYG9x-rTsl_sdLm2UWhAd4OYT5e4_8EAAD__8e6RIA">