<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/131635>131635</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[SLP] Unguarded call to SmallVector::front() in TrySplitNode lambda
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
wjschmidt
</td>
</tr>
</table>
<pre>
In the calculation of NewCost in TrySplitNode, there are two calls to VectorizableTree.front() that will assert if VectorizableTree is empty. The following small test case causes a crash as a result.
```
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"
%struct.1 = type { [258 x [1 x i32]], [56 x i8], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [2 x [16 x [1 x i32]]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [10 x [16 x [1 x i32]]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [16 x [1 x i32]], [2 x [1 x i32]], [56 x i8], [2 x [1 x i32]], [56 x i8], [2 x [1 x i32]], [56 x i8] }
define <8 x float> @foo(i32 %0, i32 %1, i32 %2) #0 {
entry:
%vecext.i615 = extractelement <4 x i32> zeroinitializer, i64 0
%idx.ext = sext i32 %vecext.i615 to i64
%__u.i613 = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext
%idx.ext320 = sext i32 %0 to i64
%__u.i611 = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext320
%idx.ext326 = sext i32 %1 to i64
%__u.i609 = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext326
%idx.ext332 = sext i32 %2 to i64
%__u.i607 = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext332
%idx.ext338 = zext i32 %2 to i64
%__u.i605 = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext338
%idx.ext344 = zext i32 %1 to i64
%__u.i603 = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext344
%idx.ext350 = zext i32 0 to i64
%__u.i601 = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext350
%idx.ext356 = zext i32 %0 to i64
%__u.i = getelementptr i8, ptr getelementptr inbounds (%struct.1, ptr null, i64 -35, i32 37, i64 0, i64 0), i64 %idx.ext356
ret <8 x float> zeroinitializer
}
attributes #0 = { "target-cpu"="core-avx2" }
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsV0GP6jYQ_jXmYgU54zgJBw48eCtVqp4q7bbXlUkm4FdjI3uywP76ygGWfbCr9tBWHJ5khcl4xv4-h5nx6BjNyiFOmfrC1GKke1r7MN19j816Y1oaLX17mP7iOK2RN9o2vdVkvOO-499wN_eRuHH8KRwet9bQN98ig3myDsh1QE47n_xs5OT5H9iQD-ZVLy0-BcRxF7wjBjWDCae1Jr4z1nIdIwbiprtx4CZy3GzpMOb8aY2889b6nXErHjfaWk4YiTc6Jqx9xMg1b4KOa66TGDD2lsZMzNIoxWmIGemwQuKtJm31wffEmVxwBoDZhskZZluoBJMzCcMjveY_viapLIZHZt6EHGomZznUWVeLk-QGVXl2L4vsMZkBXHBQMFuLZwz7unwui6x3fzq_c5k1rt9nK9cfXdIAFSn0DY3zwYcOW-Ss-sKZ-gKq5vsk5HzPjQSmFmnAPOlUmZT1RZGXnxv_33NwmvrQ5C4R_ydz4ucx_Jz72yD5J8H9r9tyVi2OGajFzriUsOYp23TWa2LyK2eF6LxnUBsJnIESaYmTnL-TIaV_BlKkrMXEDB2FA5NpZZ7mX7DBPY1NmashweGegm4ILW7QpVw9L05A5Vf-isEbZ8hoa14xDNuUBRfnxUy7H-P-mOFjEk4g3m9CPvkkDwbq-blPWjl4rPC87ZZCOgaY8yRd6d3S966NfChtb9n5bOx6a8-4MqnOJyGrC9iLMDnLF-xXVCSIGzbiHYd3JPL7ISFBnA74TVHe0Mg_pCEm90SjvP4cCfoVD_iYR3VHPCTc8KgHeK-f8LjQUPdEo76mURQ3ND75W91RiMuiuIoOJX6k8XGEi3uKcHWddKUqb77FhzzuicQxvgPSTX27LjVi9lYRNVEwy54wngpbusunKznA8ZKfNdvhBi8XDKDxATP9sgcGcK6q5_Zk1E5lO5ETPcJpXhUAUOeFGq2n2Oi8xqopdTXpCqhVUedlq6qyWWoJZTUyUxCghMyrvMxVUYwny6Ipta46WXaqUIIVAjfa2LG1L5uxD6uRibHHaS7zUqqR1Uu0cegMARzu-DCbQKvFKEyTU7bsV5EVwppI8bIMGbJDS_n462_povC7W_U6tNgOrWD64I-pXTt2d6nQy9n7TvCqoeRWb5atHvXBTtdE25g84IHBw8rQul-OG79h8JB2P_1k2-C_Y0MMHgbMkcHDidTLFP4KAAD___LnEUk">