<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54370>54370</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang crash at -Os in /llvm/lib/Transforms/Vectorize/VPlan.cpp:238: llvm::Value* llvm::VPTransformState::get(llvm::VPValue*, const llvm::VPIteration&): Assertion `hasVectorValue(Def, Instance.Part)' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
haoxintu
</td>
</tr>
</table>
<pre>
Hi all.
The following program makes the trunk version of the clang crash.
```
$cat small.c
#include <stdint.h>
int a, b, c;
static uint8_t d(int8_t, int e, int f, int8_t);
static const int8_t g(uint32_t, int64_t, uint8_t);
uint8_t d(int8_t, int e, int f, int8_t) {
int8_t h = 0;
g(h, 0, h);
}
const int8_t g(uint32_t, int64_t j, uint8_t k) {
uint8_t l[8][6][2];
int32_t m = 0;
for (j = 1; j >= 0; j--) {
for (k = 0; k <= 1; k++) {
int16_t n;
for (n = 0; n <= 1; n++) {
if (l[k][j][n])
if (m)
continue;
a = k;
}
}
if (b)
;
else
m = c;
for (; b < 44; b++)
;
}
}
void o() {
b = 10;
i(d(0, i, i, i));
for (;;)
;
}
```
```
$clang-trunk -Os -w small.c
clang-trunk: /home/haoxin/haoxin-data/compilers/llvm-project/llvm/lib/Transforms/Vectorize/VPlan.cpp:238: llvm::Value* llvm::VPTransformState::get(llvm::VPValue*, const llvm::VPIteration&): Assertion `hasVectorValue(Def, Instance.Part)' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang-trunk -c -w -Os small.c
1. <eof> parser at end of file
2. Optimizer
#0 0x000056324b123494 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#1 0x000056324b1212a4 llvm::sys::CleanupOnSignal(unsigned long) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3bbc2a4)
#2 0x000056324b051338 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x000015034ce863c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
#4 0x000015034c8eb03b raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x000015034c8ca859 abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:81:7
#6 0x000015034c8ca729 get_sysdep_segment_value /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x000015034c8ca729 _nl_load_domain /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x000015034c8dc006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
#9 0x000056324b4042ef llvm::VPTransformState::get(llvm::VPValue*, llvm::VPIteration const&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3e9f2ef)
#10 0x000056324b356371 llvm::InnerLoopVectorizer::fixLCSSAPHIs(llvm::VPTransformState&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3df1371)
#11 0x000056324b3780d5 llvm::InnerLoopVectorizer::fixVectorizedLoop(llvm::VPTransformState&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3e130d5)
#12 0x000056324b378a03 llvm::LoopVectorizationPlanner::executePlan(llvm::ElementCount, unsigned int, llvm::VPlan&, llvm::InnerLoopVectorizer&, llvm::DominatorTree*) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3e13a03)
#13 0x000056324b387592 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3e22592)
#14 0x000056324b387f10 llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo&, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AAResults&, llvm::AssumptionCache&, std::function<llvm::LoopAccessInfo const& (llvm::Loop&)>&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3e22f10)
#15 0x000056324b3886ef llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3e236ef)
#16 0x000056324c3a5b46 llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x4e40b46)
#17 0x000056324a7adf16 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> >::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3248f16)
#18 0x0000563248a7cc96 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>&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x1517c96)
#19 0x000056324a7ac929 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3247929)
#20 0x0000563248a7d5e6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x15185e6)
#21 0x000056324a7aa41f llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x324541f)
#22 0x000056324b4a652f (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> >&) (.constprop.0) BackendUtil.cpp:0:0
#23 0x000056324b4a9102 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/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3f44102)
#24 0x000056324c33ebd3 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x4dd9bd3)
#25 0x000056324d0bc0d9 clang::ParseAST(clang::Sema&, bool, bool) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x5b570d9)
#26 0x000056324c33d558 clang::CodeGenAction::ExecuteAction() (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x4dd8558)
#27 0x000056324bc116a9 clang::FrontendAction::Execute() (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x46ac6a9)
#28 0x000056324bb9d72e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x463872e)
#29 0x000056324bceeac3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x4789ac3)
#30 0x0000563248775101 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x1210101)
#31 0x00005632487714d8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#32 0x000056324ba1b459 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
#33 0x000056324b0514bc llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x3aec4bc)
#34 0x000056324ba1bb6f 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
#35 0x000056324b9ea34b clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x448534b)
#36 0x000056324b9eae59 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x4485e59)
#37 0x000056324b9f4cc9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x448fcc9)
#38 0x00005632486c5f0a main (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x1160f0a)
#39 0x000015034c8cc0b3 __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:342:3
#40 0x000056324877104e _start (/home/haoxin/haoxin-data/compilers/llvm-project/build/bin/clang-trunk+0x120c04e)
clang-trunk: 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 3e12e83ea4e2b11e95011ebebc3545db5e55503b)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/haoxin/haoxin-data/compilers/llvm-project/build/bin
clang-trunk: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-trunk: note: diagnostic msg: /tmp/small-0f6587.c
clang-trunk: note: diagnostic msg: /tmp/small-0f6587.sh
clang-trunk: note: diagnostic msg:
********************
```
Thanks,
Haoxin
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW1lz4zYS_jXyC8oq3seDH2TZjp1y1i5bk31UgSAoccxDS5AeO79-uwGSIihqYidjb3azKUckcXX31wcax0Rl_Hp2nRKaZfOZcTEzFup3teUkKbOs_JYWG7Kryk1Fc5LTJy5IDXV11RRP5JlXIi0LUiaykGUUGrOKiq022Mwz2j_1aTmM1kTkSJR1ZXZasKyJOZnZS1HHaVHPtzP7UlXDF6Eza0ki_GEz-1yVi5rWKSMN1AfrmsQzK1Cv2Aw78e4laV9kXTgegJWFqNtqsoFRcETb6sfxHPXaHI7wbtpk5rddSUdxC0JfEKMfk0gettjNwJ_tkODMv1Avb2GafB2wTZ5G5LvybOaeBzP3Ah6eelj4sId84sAkP2A0KSsCpL_KChMqCL5eds3I19PTEdG-z1M_GMHXZT8CsHku_0b9JB-mB3wUAw4GIxb7EQttxOLoiDBmgl0Rgicl-1f1KPABuGuNu-b5RA1BM6rTouEj7gihkrGnUXmvyYMPRSQaEdG680zwYaVSDdPatLAgAhHiQRxHvvdoHBm956V_eS7TmJQ4lg5hpPQ-tIgUWqEzSMtNhz_h0IyH3OHfkJlDWx-HkGNxBSPQqQpOp3eCnH7Tw8ygfmYvgPrVtsw5Pmj5khb9y2lMa4g3V6zMd2kGUQ7es-w5P4VI-JWzuv3ERwpoXq0qWgiQJ8eGv0KDskp_w3F_vQeKc7bbATnLDpCo7Ggv4O9XmoGtWFrRfT_UI4Qmrko3vEYTHbTquspwKOPAsPam5hXEtRIE8iTmC7IQgldYRACvLRWKyXaY4ILLGHUDA9GC8fk9rWSQs3ySUAAgbuP5_e3l4vGSiCbKU4jIJGo2pOK7sqpJXZJtXe8E8mBdwR_UiTlyNS8riE5XhBYx6YK8nC5woiARZU91RZmMljsYrCoZB2ZjIsqmUsXYkwpRshQgiQmojwhWpbu6ZQugYk8kbnKEWRUZc2XV9-3URatNk_OiRv6IZiYMrQSNRbMUc955xZKXCUQ0sqMVQEhg5uLADkx5CQCjGltt47tdneag-Ko1ZZjVDGK8GPCf69mWE5mW7YQOMAWBTDK9Qskf001Bs2uQEkwNtIHOJnUbElUlWgsy5P_92OZobNOizsAOxKtQL8uM06LZ3RVqNJwpCgGvAGVWFhvp0ujZf9wZoibNYnzKbkMvs86NFzuKGLC2d3Hg3dJ4N1zTtgOyRIt44KyExOJ1jApAhpxqbZYQcPlLPQ2P3ZIwXcN2GA88mxlkva64AMvna7BZJbVy4ZfAW3vOaQbx--V0UzSqYldvK07juSjnhpTFdGAUTRJHIxPwyLAjUtFUcDJAZgODsVPxS3L-86r_tOa2CR-iVcvVfI5fryLmOwS5KdIXVfAsuQHO4CmHBjO1Fy7MbQtzz4mrc8Jo4IaERqWU9G2c1LFCQ_aSRAIk4u-JeGMiPigFAtRa8b0WfIN-tn7G0PJWuqBblD8raZyLDWSHSj4DQ1ewp-1P0V4X2Ro7ruMyp2nx50iGPhqR7expBjrNmBmG9wbDYWgynjJ_B7poJhNqxu8YjsWTPzkJTIZ_NTWoSeCDXZyHiYWTSNjn86Ye-mx4-OaAz5ui4NVtWe76-bJSFUn6crt8fFzcX9-IkcQjXD5DsDgxgW9NMD3u2n5gxO4bBeuLYmzwn5eOmzYwr0lnjaWjhj2QbiiYNDLMcIpORP7CWVNzLNOEu8w4RoVl2RRqIdVNQKn6HsIg-3p66RSm4zYXZZ4WFGpXFeft_Pnh6AE4Gnq2jl7gu6F1BD1-DzmNKm6TngObUAWfIYllAaOaJM5YkgQ8-nclgSFv8l2mSQETGeuz0aHGHhnNaHX5XGbNZD3SuCmS8qBiBekcr3t_mWwzModR7XlWsqeriv-r4QV7_Q6R2zSqaNW2GIXaC55DesLj8xTyynH3xeKBiyabqhECUlWUeEnZtuMN5t42THRw2UsdigVDI0FO-sBOJsxFpfyXB2Tb7FQ67QNwXj1dQhZfT3gSJM2Y3D42eT4U_ROMEGxMM0J3ZISBp82Ux43wbQa4gLzrVaTiF1rQDcaw5USnFsqPl972RjOoN5Se2dSNHG_AfcxrWJy1KgPhfyljnk3LcOBWOmoj7XNY6DzzWKHDxR_CTO0C_bdqw-GOAWBr2vCH2qA-hcxgqA2pge9x_vdDEXAKACQNxWCIYkB9xsIfYdMfh_7_fWOkVdM1fVCaptVw5BssBC72HIIWm4yvyo5T1NYipjsIQdM4qA7vQqHt8mmW7YdqQ7PDwDJGlh27_H2W3Qm9fCNyP8oye-SO2-VfXR9gkwHArenDHNkkdczkDRFjSgv_4-gBPi6Ao6GnLwMd6rmWPJSgRVm85mUjSEFzLnZy5zZUTGM-iRvNeZS9XvNs160KH5pimHzepzuepQVuPEtOVKNzyp54ES_6cN0nxE2RQpq-3tU6RBX9tt59q9Kar0VdcZprnWKeUMi-1-BkHLdQvtuxC_XeW-iuyjK7a-pdU1-lylDeQnTUa0BRKncuM3pQ2A43GkPSovGlTrPD3U3Ujz3ST2gaFhnAibpoB1FkdbQvUropSlGnTFwWG6kMKfygyTWnMa8eOa3Y9k4uV8RgQ0lruoRY9hMvfqeVWlD9TqNbeJtqMlg11lVabB7UkcWhky1GA_4V7Oqj_TdxHFC_5r-OvnaweRTbE7AsAeIm7xxV7bbLdXUmXfVLkY4MZ_G4anfdPyUPj-MQGNck09aEsRExIw6Hkt3jQQ2wqfP9CCve1pQicMX984MlcCPXBwY1CUbrOjt23WDCnVqTVe6sNtY6Kw4-A_kA2NL41lZAETNNj2rIX1VoGb2vDRn_FJY9yoAjjWVtuRFFYexbXIdaEeuOPqfRPi7jZ_iAZwfAtSaWfoLAOKdM8-5WgL10zyWjh8IcSP8J2zyOH4TA7VAc_ZQ08H3XNEzCmLnGEx0tlVpUFX3F2G8v2ZZW3RSxaFdqehkUDM5SPzYBtYBlQzsn0M9nQSrTiQPSaWZprmT4Gcj2iAfQamNG7qFOiSjNLa7SZ15N5gWjg1VqRo4bShQGU2W3w7iuJJCyVjlon8IyYAWP5tcJ7kMOTEbRbs1naYIF4R7o2NcnFaZvRZZ45jks3M_r-5V3P-2u1-zlxTTVR0RFynCOTZEriZLWGAvWdUVxW7atHg0H0qFD4PKzq1ckF_uJQRqNAl_2mVl-RvMoBjvx92iBrO0Z-s9lNK0Se3zWDR470MbUiXafNz_ShGevGqLf196H5xqUM-BfM3RnbHORl5C_uc3IpH5Hq1rl80eNQ9_hDjm1negodlJp9GBy7QDVYvuoIzY4lnN_p-miDTm9TB84MTiBC8JrluWN0eFu-F50AHpxHBqovU1BtCNrjYOQ3JvDjqZoCe0B5lvR1NZ9nwQqYKaBqqdxYeIwdhTUi8G7llRMZBPHlPG5oH40nAmgpcGp72h7zE0MStqrKB-ZcZieAZQ0VsLRBRlmRDZZr_E-CoQ-CEbr91yRYQIvs8hLSepVtcVx5GUZ27HwtyfvjNM403A4UYQ_OvsyGNDqsRjd8-RVJTea2xvqSZvCgwEpQ1J3HMm3tN4S_pJiMIg5MWFew7tygpPTZ7zfKDgn6SCTHhLr78Kb7tyYG9hRvw65gcEbmAPKfLa_PDqQkdjctHhgc-pwKzJNHroG_EY8YrbruHEEbuyCWvfxUW2noFjtFSSQtii_FYOrSO1dfrzCRnK137wgu1KkL6pK5v0ZyH6RSnx-lIamlFCU8iYTifudJ5IL6d2t_fyJv8Gl4PaK6mK1Wiyvyer6klzd3d7e_fPmHz-Rq5vby0eyupPF519-Ig-X93cPq56H-6nrp4HAqHL0CmrfoOJE5gdQS-t-yLeCgNDX-Q5-5TXUUyPx3MA_cm_5vaOI7R_SyI_Sy9Td7dWWFk94RqE-r5W5yfeT-MyOQzukJ3VaZ_xs8M9K8PYtXtVVMazzor_HFeyTpsrO3hdT4DMVosGzoCvXsX3jZHtmuqEZ8cQILMd2eMJ92zFNyAl80_UZT_yTjEY8E2cz93zmXpykZ5ZhWYZtOqZt2pY5DyzLTfwQluiOZ_M4njkGh0kl6696n1Rnkge8_w2VGSRX-3vgJ-BDePGLd-PTpt6W1ZmKMnVzIvk9k8z-G7ZM-T8">