<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62308>62308</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang++ with -O3 failed: Assertion `(!ExtendingManyInputs || SubMask.size() > Mask.size()) && "SubMask with many inputs support must be larger than the mask."' 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>
Godbolt repro: https://godbolt.org/z/oqa1Td3Kc
Run clang++ with -O3 on the following test:
[Test.cpp.zip](https://github.com/llvm/llvm-project/files/11303347/Test.cpp.zip)
Stack dump:
```console
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -O3 <source>
1. <eof> parser at end of file
2. Optimizer
#0 0x00005571e0bddd9f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c5fd9f)
#1 0x00005571e0bdbadc llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3c5dadc)
#2 0x00005571e0b28cf8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007fa9291de420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007fa928cab00b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#5 0x00007fa928c8a859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#6 0x00007fa928c8a729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#7 0x00007fa928c9bfd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#8 0x00005571e23d11a1 llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::finalize(llvm::ArrayRef<int>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54531a1)
#9 0x00005571e242a598 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54ac598)
#10 0x00005571e24450b4 llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54c70b4)
#11 0x00005571e244cf6d llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54cef6d)
#12 0x00005571e2450ac8 bool tryToVectorizeSequence<llvm::Value>(llvm::SmallVectorImpl<llvm::Value*>&, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::ArrayRef<llvm::Value*>, bool)>, bool, llvm::slpvectorizer::BoUpSLP&) (.constprop.0) SLPVectorizer.cpp:0:0
#13 0x00005571e2451d97 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54d3d97)
#14 0x00005571e2455bdf 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
#15 0x00005571e24565fa llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x54d85fa)
#16 0x00005571e1fe3ff6 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x5065ff6)
#17 0x00005571de4ff2ad 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>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x15812ad)
#18 0x00005571e058cf5d llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x360ef5d)
#19 0x00005571de4e4726 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x1566726)
#20 0x00005571e058aeed llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x360ceed)
#21 0x00005571e0e4f651 (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::default_delete<llvm::ToolOutputFile>>&) BackendUtil.cpp:0:0
#22 0x00005571e0e527b9 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ed47b9)
#23 0x00005571e1e0ac2c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4e8cc2c)
#24 0x00005571e32e3299 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6365299)
#25 0x00005571e1e094a8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4e8b4a8)
#26 0x00005571e1669269 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x46eb269)
#27 0x00005571e15ed6a6 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x466f6a6)
#28 0x00005571e174d497 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x47cf497)
#29 0x00005571de15f9c6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x11e19c6)
#30 0x00005571de15b7ea ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#31 0x00005571e1453f0d void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#32 0x00005571e0b291e0 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3bab1e0)
#33 0x00005571e14547cf clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#34 0x00005571e141c20c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x449e20c)
#35 0x00005571e141ccad clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x449ecad)
#36 0x00005571e1424b7d clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x44a6b7d)
#37 0x00005571de15de70 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x11dfe70)
#38 0x00005571de068455 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x10ea455)
#39 0x00007fa928c8c083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#40 0x00005571de1564fe _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x11d84fe)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltz4yjT_jXKDeWUhM4XuXCcZHf2m6lJjbN760LQsvkGgRZQDvPr30LyCdmeJFvxvseq7E4ioA9PPzRNS8QYvpQAV0F6HaQ3F6SzK6WvHoh9IZLcqK6y5qJS7OXqF8UqJSzS0GoVxFO0srY1QTwN8F2A75bD8KXSywDf_QjwnfqTRA8s_j8ahDdBOB3-_62TiAoilwG-DvA1euJ2hSZfY6QksitAtRJCPXG5RBaMddKHxen1Axh7Sdv28gdvg_QmwMXIAG5XXXVJVRPgOyEeN_9MWq3-H6gN8F3NBZgA30VRHMZxkgf4zpOKy31T55bQ74h1TbszIwuHH6qkUQKGp-FlEJb3Wi01aRDRy64BaZ1hyKHQOs1UNS0XoCfw3AqlQbtnDoYJMQa05UqaidWd_B7gu4rLzfAapcmSPRFdTxI0WaKJcnJJ2zrpnW07e2nQZI4mkyWlE6uUoCvCZRDf_FS9m2wkac1KWTSpqRJKTxgnS6mM5dSgSS3VhGpiVv7jrzEK4plRnaYQxLcDBpHDIIhnoOogvkUt0QY0IhaBZEjVyEE_zMRu5tfW8ob_AD08QwGOQxQ-h2EYpmkeQVgxxsoa9XGMp0E8NS9m-OVec2n72DxoQiHAxW6SJk8LZawG0gQ4C_AMcWkDXKIAFx8UiwBfh88xTWtW1lvCOPujkf0VYfSY_TMBRHbtVznnS0lEgItO9nuQIaGclnNYywijnrXYtxYXtC7QzAX7G1D1CPplMO9XIplwSos1kt6cmZIWnvsNFMTTsP9vqyJeq8hrUuIyYpDgEC0WGoxVGhbarv0UvArw3XORLbJkIrjsnidL2Q0DrV1pIOzSqMuw9yVKEhx6niT7agpKqjCskCbcwBvkUyc56yUncRhWnuTUl1yQIi0RqdSbLN-TjHGRlp7kbCw530b9zTJz7MvMfZllVbPsfTLjuGaZJ7PYZwmOWRSRaJ_Ton0EapXud3L_6Fr93s4_3w9_zFddXQuYKWNvjeUNsWo9reaSCP7D371TrcnLN6iDeObIFt-eYS-kSRpHJPK8LD0vE0zSsniHl0uwt9K6zWCs589rCx80QL8SuePEBnjqMtZRPHYP_yCiAzfVwbM_e94QIe6tnoP91LTi9KLsLLASmpbF7gTFcRT6sCZpWCXvg9UBdIDq66icwTuah1XieReNvKN1xvaj8fn-j61398Ssk7_VLw9qO_CZv9u32dsQHA6_SilxHjigzpgHB_bhSENCi14_8l2ew58dSFc4HHjo3CtGfB7WvcrnfVTqTlLnxUL3OPY2eIK3i71lu6flAdD_DJFvocI6vt5f7yBIT4zLPve0WrXuhC2RR9zDg93FOh7FOmJl_jr1t5bMXHVqPslroeh3z-drYjhdP56-35WP5TiLWZl7HE9GfqcVq1_3W3ey5---o3fr6B-Qd06JIPr2UYluGB_B8EB0nxeJNLXSzSdZqxNzPvNKE_1ydMZ0-g1MJ6w5GPmsVHt0yY1quHTnt8vJhwKN6ZrWWTwjdHU4fgMNkQzYNT-ic30XIG75N2iI_n7bcGtd1KYbkrZE2zfzMx3FKUtr8qY4vS1GU0nEi-HmC5Fk6cg4O7LofActK9KaeLzM9v2NaojrOtuzl4ElXKwvT8SYL4qBOG61z8UDnLzhew0G9COwAQ8wfw0l9_NvBH-YpXWdefDne_AzSOoaE_YB8Pdzf-bjX4X7f1GM0iLCxC9gvKtOmBa0Tvej-EWxTsCD2tjmojNlpN3eaMaeDwve5fd6ybm8jrMQ6tT3uvS5C0mO35c6Nm7O3ojVR5Fvh9Up6v3rBSBKsyzHXvLA4Yh2BIC9IQkcg_0_Da44CymAx1fsN9kgqbM0cnqJVPKlUZ1BkjRg2r4xWA5mumpiagw0lXj5FUS7qR-_dXK_9LjnLQguIcDFYMm6JKXfQbLpNuUay4aRTvI_O1i01gdFk6dF-6S5hcWmEbm3iEFNOmEXDARYeGXhOl1nb1H7oJT42jeD7_hAjLfoHK3aKSzR2vHfLRdHqyzsdxAhxXlVoj3kHOxrIYMKH9ibXUv5Vi573HtH96b8CoSBngPRdPW1ry7NplMynjpTDH4B-cqsoTJ-ZdJnIpfHpuwVRlZzuXR3syNpb13e_oxCuyWfpNWd4Y_wDeqZtPejoD7W69rURWf-Yiw06wP872fhx29vYEleld729m6WEYSEYnoEypmSpms2-3hoUfd3ItHv5N8lH5FtOn9Yt6rPk6oSKCjF1PPFuy3GGGJcevvjnmgD0_mDb-kcGuJ1b87WxcniLMWlj386wr9MSHFkm62pPGzzZ6CdhQ27i_OgWyXEay5i_86TZSXOPHTvtIv3dtftm3omIzOocObDmXtGpsAykvlwDmo_SWNJ3xQ7huhpr87D5SyrM-JXKV5xHOUJS8rcy_WDyTt_HhUlh-Yf-Lu94H-oAzmtE791g_06N0rrkmaI0mjREC5P9d3oiuhda35IvP4zPEOPirPz-BFFEJXUC4T3ktT5UeVA0Ab9WfTQp4qfNlEPnRqdbk7GOlnunX8lYpo_nui4-O8-oySN65D1yJzuePajw1bc1qSUCFER-n1RS2fpjjiD7jWJZtFMNQ2RbLyrjwZxe-ip_kwn_vVld5Rv78bbBYsFfX6OouGPihhO3ZHInU09it5k92BhNeHWbIZH4ogQblO4--J23E2Z7nJ8z6IB835JgHNBmoqRAOc7qHCxeU_8m6qOx2P8dreMINwLxbF3uNuaeE5qEC8enD8P3RlKg4pUEYQe8-MRxdwuR__NFBn1RU9yIfGBiygO6Ung-tiRgyNzg6aXzUcL3YRTNfVPpk5H76q2vn3okZCUgEOvPovTMS6UsPfi8puqzGlQflPVZ27sqVvEQWre8qAlXK9fgr8Dx_3r4tnRpH77LPbrsQQnVX4SzZu9373K4UjJcCoKfyOaH1-gJCSrch-_fHSwM8jDwdZNibKxv08r08O3PieO7Q8vSlgNuZ-aC8_2MCuSNEXO6g9XHgJJ0tRTXo4-paFhEaPFQvDK5WKi7WLPkrd-XJOERbyvJRnXXVlSAxrknwHhIqlhq35_PJ4i0LpvOQ_kQPX6RoDomsA14QLY8F0lPHNHBgYoihNnZ2cATR6RVcgAIL5Xpq-VbSp0pMF2WoLbQm7x6PPHC3YVszIuyQVcRVmBcYLzrLxYXUGSFEUOYV7lVcRimmcEyqSkObCIZGl-wa9wiOMwwXFYxiUuL0kUpxWwmhV5llckC5IQGsLFpaP2pdLLC25MB1cZjsPiQpAKhOk_VsVYwhPqBwOMg_TmQl_133tW3dIESSi4sWYnxXIr4Gp27NPTATLn6XQTJOT8dHGNbp8dvFwuvxD58km2nTUoyGdBPkPzrvpCzPdLM3zI1O-2-BaNng2bMAtwhgKM12sG5Q2RL4gPMk3Xtkpb1HTGogqQIHoJGtkVGT6MbZxU5yjO1wZfXnRaXL37I9geMRPgux7RfwQAAP__UPWPyA">