<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/144212>144212</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LoopVectorize] Assertion failure: Instruction does not dominate all uses!
</td>
</tr>
<tr>
<th>Labels</th>
<td>
crash-on-valid,
vectorization
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
dtcxzyw
</td>
</tr>
</table>
<pre>
Reproducer: https://godbolt.org/z/WqTM1vavE
```
; bin/opt -passes=loop-vectorize test.ll -S
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"
target triple = "x86_64-unknown-linux-gnu"
define i8 @test(ptr %p) {
entry:
%.promoted835.i = load i8, ptr %p, align 1
br label %for.inc346.i
for.inc346.i: ; preds = %for.inc346.i, %entry
%storemerge827.i = phi i32 [ 1, %entry ], [ %inc347.i, %for.inc346.i ]
%conv267822825.i = phi i8 [ %.promoted835.i, %entry ], [ %conv267.i, %for.inc346.i ]
%conv267.i = and i8 %.promoted835.i, -1
%inc347.i = add i32 %storemerge827.i, 1
%exitcond.not.i217 = icmp eq i32 %inc347.i, 0
br i1 %exitcond.not.i217, label %cleanup636.thread812.i, label %for.inc346.i
cleanup636.thread812.i: ; preds = %for.inc346.i
ret i8 %conv267.i
}
```
```
Instruction does not dominate all uses!
%broadcast.splat2 = shufflevector <16 x i8> %broadcast.splatinsert1, <16 x i8> poison, <16 x i32> zeroinitializer
%vector.recur = phi <16 x i8> [ %vector.recur.init, %vector.ph ], [ %broadcast.splat2, %vector.body ]
opt: /root/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:10329: bool llvm::LoopVectorizePass::processLoop(llvm::Loop*): Assertion `!verifyFunction(*L->getHeader()->getParent(), &dbgs())' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=loop-vectorize <source>
1. Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "<source>"
2. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "test"
#0 0x000000000563b448 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x563b448)
#1 0x0000000005638dd4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x000072139da42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x000072139da969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x000072139da42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x000072139da287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000072139da2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x000072139da39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x000000000348514a llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x348514a)
#9 0x0000000003486e90 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x3486e90)
#10 0x00000000034874e3 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x34874e3)
#11 0x0000000002da157e llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2da157e)
#12 0x000000000542c281 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x542c281)
#13 0x0000000000ea33fe 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+0xea33fe)
#14 0x000000000542c763 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x542c763)
#15 0x0000000000ea224e 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+0xea224e)
#16 0x000000000542a331 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x542a331)
#17 0x000000000095988a 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) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x95988a)
#18 0x000000000094d05c optMain (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x94d05c)
#19 0x000072139da29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#20 0x000072139da29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#21 0x0000000000944c95 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x944c95)
Program terminated with signal: SIGSEGV
Compiler returned: 139
```
cc @fhahn
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzcWV1znLgS_TXyiwoKJD4f5gGPPbupG9d1xancR5dAgtGNRmIl4dj59VsSjIHJJGtnvVVbcfljEOrTp083LSQTY3gnGduA9BKkVxdksHulN9Q2j1-fvlzUij5tPrBeKzo0TANcwb21vQG4AmgH0K5TtFbChkp3AO2-ArT73x8fb-IH8nANogpk0fQdVQBfwppLgHaqtzDoiTHMAHwllOqDB9ZYpflXBi0zNhQCBncgqizRHbOQEksEeVKDhQBfQYAQCw4AVyzoUR4BXGHkf7nLeH3pPmWJ_xXw5w8xKgCuYlQEbRFNn6Qfyo7mWRLcuWkIzTys5r1gRw6PRXafJcEgP0v1RQaCy-Ex6OQwmoCooqzlkkFeQJBELi6Ait5qCFDaA1RCkF-CqGLS6ienZ1S5O2Gv1UFZRguchtz7EopQyAuAtnA230IieCdh7OxgraEgNRPuZqt0yGWDkyzkI5HVCK7gS75cunrNqJnCXcOirRsaqTv_AKXGKs0OTHesQPnEvN9zyDGCIL2E8dIIgvTKX6eXbszj5s-4S1d-5uSiUfIBZXmBUIHSpYviCLRW7wceJ6iXupycEUm9s3OOgvhoc4xmNKF0lOAbhZxRPGWdPXLbKElDqWzIUZx7W94cesj-ONovVYqOaefxWXs357kiGsGIHPoMZ6Hda0ZoEaMR5gdF8x0jXP1FaThemtlJp1nnqAL51WlPWHx-J43VQ2O5kpAqZqBUFlJ14JJYBokQcHANAx0lq7UitCHGhqYXxCJPxuyHthVsbCcQ4G2cwUf37ODrMzZcGqbtWJirqb3iRsnVuGsK1_Ar04pLbjkR_CvTx4yP_kLNmkE_V-WJ97HuljNDhzTV3zTe70_q9DTK9XTXnqdqVb31uUE7rZQFaCfEwyHotfo_a46X7g-vAdp91ESaVumDAWj36dh7Adq9V6p_vg6bvnc9McKodNi1UgJ6HFwBXK3m3hJjxuFeq4YZ4-4CVKynA1SBEasyTnqXa5d9FD8wzdun3SB9AQDXeKv3AcDXHbO_M0KZ9mPlNHRLNJN2HBolyWjdmeNACVAOW8IFoyGIqtv319XdNTRDfeAWElgPHdSsV9pCq04XNG73Qx026rAQbS0lN2Zwlbgb-4FsxEAZtHsGG03MHtak-Ww1aZjzfWdJ8xnS4dCPPT4KQVTeatVpcoBEd8OBSWum1Lkkol2jDj0XTAfssRdKu9B3jSCyC8hRNRNYPcjPAO0WS6pyEKTv3fVg-8GGBgZ3319qAd4aNeiGAewW69gx-zBIyWUHnY1b5No5I2trgLdSBVxapgUjDyxolW4YDZQUTwBfSjVPPbnlvLkMIagkPCg6uCUVoRUbv4Sic4TelIWncAzRoY-rNBpbDI5g9Bgdv9IM10lSLB4A8zSV_K3m0vpEf3RpX5W9Jl_ulbGakQNAmatV7gq3hL5W_1bGAbqMHidaTtGRdHxCuqA0gXe8k0T8TiQV_knyHLbQ8I7LVt1b_2Bu4YPidHxGJwsz9YDI_4wO0OQgRzEuKUlQiqIpmrG7TC9Gixcid6MJjQozz9mbzIzxGrDMyraB_bjo3H_mQrwO3dvP6Mkp3STPYGd8eK-lneTZDJyugVGRtxiS2nWVV8F6wxk2-wY2rl8NGNczYL4GxCUrs9cBepMZsFhWGE6KNE7IW6wLb_VITJRmwuUJ4YyV0V8T1oN8d-jFiuy8QGVvS9hRGgm7Rzg6IZwnDL-I8PfJbhf2lSTiyXBzQyTp3K5ue8bI9cc3DtKFMQe5alSIkjjN2YIkZZZwMTVYYsyNokycp7oK7ltxfip29_3vF3WSbRYVrbp_ghpUxAuSXsgfEfyFtZrUmLXCS60iRjBu36IA_zGNf-HcjOLPqUlOyzjPlg3wxr81flRHPk7yipLeKn0-2tHgVbFOJv9EFebZog2mJ1WIUPK6KjzGtn2hQD-hwPeK6N8j66jbrGp2UkAE45f0wXNa_ioSTSrMGuWryivTsiiW73F68GVzy3smuFzvau6s5rL7wNpzZfdNsB_98ekNafYepzp39z2vNdFP72Srxreu01lKif_6Xe2OizMgf-v2d8KptCZPbnSZHa-JGDouv-3J83xj6Tj2vIHGW7e7gisZHdblwIU_3vBv2Gc6vertvVVq6gFjFP_hkv5o1iemecuZPs6r3Z1X_32z0htra668Yl15CY3SBqre3hAu38ynR519lif7qpKWr9y2epNnQBSdArIkgvf3zubeWKLt_WEO58UuWLJwEZ_olDRlCkfwt5PJgY4uj8dSlunx2JXCL9zu4bhZBriCd-9-u7v-7ROIqu3kEmpmBy2ZK3cY4_LkVLdpIEiidk_2El7QDaYlLskF28R5UhZFVkbJxX5DkzJNM1bULWvLEidxg9M2LoooaZIYZ-yCb1CE0iiLkyhP4iQJy4Q0NMYpYVEW5QkFScQOhIvQPRCh0t2FP6TbxEmCYnThj7mN_x8XQv6QLlAyeCCCU4AQQFuA0PGgiIxvRQikVxd644_-6qEzIIkEN9bMHiy3wv_fbLXjAOnV4nCzJVwMmjltXny-fTFosfn5Q8kp5IcN-jMAAP__HgF2iA">