<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/123165>123165</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Hexagon backend assertion "Decremented past the beginning of region to repair" in 7zIn.cpp
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:Hexagon
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
iajbar
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
androm3da
</td>
</tr>
</table>
<pre>
clang++ asserts when compiling [7zIn.cpp's `CInArchive::GetNextFolderItem(CFolder &folder)`](https://github.com/llvm/llvm-test-suite/blob/1f917f95918479727e727c710348d9bf674588fc/MultiSource/Benchmarks/7zip/CPP/7zip/Archive/7z/7zIn.cpp#L385) from `llvm-test-suite`:
```
hexagon-unknown-linux-musl-clang++: /local/mnt/workspace/upstream/toolchain_for_hexagon/llvm-project/llvm/lib/CodeGen/SlotIndexes.cpp:218: void llvm::SlotIndexes::repairIndexesInRange(MachineBasicBlock *, MachineBasicBlock::iterator, MachineBasicBlock::iterator): Assertion `ListI->getIndex() >= startIdx.getIndex() && (includeStart || !pastStart) && "Decremented past the beginning of region to repair."' failed.
```
I have reduced this failure to the test case below and bisected the failure to b6bf4024a031a5e7b58aff1425d94841a88002d6.
`./bin/llc --mtriple=hexagon -O2 ~/src/7z_20_0_0.ll --window-sched=off` does not assert.
Reduced failure context:
```
$ ./bin/llc --mtriple=hexagon -O2 ~/src/7z_20_0_0.ll
llc: /local/mnt/workspace/upstream/llvm-project/llvm/lib/CodeGen/SlotIndexes.cpp:218: void llvm::SlotIndexes::repairIndexesInRange(MachineBasicBlock *, MachineBasicBlock::iterator, MachineBasicBlock::iterator): Assertion `ListI->getIndex() >= startIdx.getIndex() && (includeStart || !pastStart) && "Decremented past the beginning of region to repair."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ./bin/llc --mtriple=hexagon -O2 /usr2/bcain/src/7z_20_0_0.ll
...
```
`7z_20_0_0.ll`:
```
define void @_ZN10CInArchive17GetNextFolderItemEv(ptr %this) {
for.body.lr.ph.i:
br label %for.body.i.epil
for.body.i.epil: ; preds = %for.body.i.epil, %for.body.lr.ph.i
%epil.iter = phi i32 [ %epil.iter.next, %for.body.i.epil ], [ 0, %for.body.lr.ph.i ]
%0 = load ptr, ptr %this, align 8
%1 = load i8, ptr %0, align 1
%2 = load ptr, ptr null, align 8
store i8 %1, ptr %2, align 1
%epil.iter.next = add i32 %epil.iter, 1
%epil.iter.cmp.not = icmp eq i32 %epil.iter, 0
br i1 %epil.iter.cmp.not, label %for.body, label %for.body.i.epil
for.body.epil: ; preds = %for.body
%sub.epil = xor i32 %j.012, 0
store i32 %or911, ptr %this, align 4
ret void
for.body: ; preds = %for.body, %for.body.i.epil
%j.012 = phi i32 [ %inc.7, %for.body ], [ 0, %for.body.i.epil ]
%or911 = phi i32 [ %or.7, %for.body ], [ 0, %for.body.i.epil ]
%niter19 = phi i32 [ %niter19.next.7, %for.body ], [ 0, %for.body.i.epil ]
%or.7 = or i32 1, %j.012
%inc.7 = add i32 %j.012, 1
%niter19.next.7 = add i32 %niter19, 1
%niter19.ncmp.7 = icmp eq i32 %niter19, 0
br i1 %niter19.ncmp.7, label %for.body.epil, label %for.body
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsV01z4ywS_jX4QlmF0PfBB9mO33XVvLOpyW0vKQTIYoJACyjJzmF_-xZYSmxHMzs7c9nDm3IlMTzd_XTzNB_EWnFSnG9AtgUYC_K1IQZgDLL9ioyu02ZDFDO6TxhZNZr9a0MlUSeAtwBvIbGWG2fhS8cVpLofhBTqBEG2Lb4dVUSHAeDCQpCj3VHVhnbimYOkBkn9B3ef-as7aMm4OTreA1zuzt8gwHkb_gO4AjkC2R7gsnNusN4WHwA-nITrxiaiugf4IOXz_GftuHVrOwrHAT40UjcAH-K2iou2yqq4TIuqwAUvcEGLGCVpyaqmzYs0K8uWAnz4c5ROPOjRUG-_5Yp2PTFPFuBD8U0MAB929_fvX-aU_ED4NSedfErKDOAKtkb3Pv9bcjnyuaDwydH0QXXHX8lJq_WonpR-UWsp1Pi67kcr1xd1B0kNfcKaEgnwoVcO4MOLNk92IIH4OFhnOPFVcVpL2hGhHlttHif_c7UGo79y6i5qKHzBdprxP7hHPUjtjorxV25DYkmN49KHf9aCwWAUlvMCdx4wfCDCTENH9YWoEwe4_JPQTii-JVbQrdT0CQJcA7yDHybOboTjhjhtfgpSeWJ1kKTQylf9k7DuuAbJ3Ymf6QFc-lUByR1I9tA6YtyRvUa30zgHOIcAl0JROTL-4IEQFDtQ7CDA8UCsC2NXaLzn1PCeK8cZ9BDoOg4bfhJK-bbQLTT85Kk5Dc8Finyr4QK2REjOohs1AFQfYUeeOTScjZQz6DphA3g03HvxAbyqICXWh5L6BRLFYCMspy4Y8Et8kzdtinBKUBKTjBdNVpK2jVOcsSot05iUJUKY5dGbNCPfR-KsGArX694ZMUgOkv2kJbj-O4b_BvhgDQ098IjRI3pEkZRwvX4RiumXtaUdZyDZ67YFOYJMcwuVdtMGMkX7MiU586VaOf7qpka5rAtO4e_wAqiWkv4vXfRXt_x_dsv9p7v64Q7asemFgwQ248ljtXHe6ifPjPd1FdaO3G_2oYmmdAIvaojtYEPokzOEch_7wRH6BNnYD2eFogig6t7okyE9JOY0-tx8-J_UqlecNdhjKQnoReUCVEfRwk4BcnSFfDthLmCMt0LxsxxBih7_8Tm-OJnj4sOpfPcMcDk4fyZnfu8JK1hsAapbbSJ_H4ikiYYuEudgEDYGStJw6S3eMCLig5jI3w4mNfyvPyDZwsFwZqEX4oJnvLsanTl5QgBnHhJ55QfzoRNQJNjfUq4mI-U3mxtPZ_8w3EF2wQR9J1jATAFRCCQ1YXBwoR2variDRIqTguWMj9_xoryAo3dsPGPxom81Snnr2DptOBRliHDhFS94va5CCEEYO9fpYtZbLtjQfoj8du7NBO0HyP-5aIpmiYh40YHHfFDP4uCypGZBfVcvM3U7NtPCJnv4qs3M9muEYvzOdKrgeU6bKo6_u5ZpMDDche665vVjSouK895mPkuqFYpGxY3pD1V6IeSpBiGfJd_a_K5r5Rc1rpacT1NBZr-fQVSEGNMCxpPJeRUnUKjUraDf1jm-oTzxusVPs8sWXrzFkvYvrG6Uf227rPB5Y_vYEKgGxf5ya1-xTcKqpCIrvomLpECoQlWy6jZFEVe0oEWGS9rwFqUlQlmZsrRs0oRztBIbjHCG4jhHeRInSRSnrMrbljYlQxlDMUgR74mQkT8qI21Oq3BIbmKcxHm2CuTs9Hr0xyNXDCT13-Z3RnhImk04Z5vxZEGKpLDOvrtzwkm-mQzg5GK6GIaLya_cFADGUCg4P8hWo5GbX78NTLk-b_B_AgAA__-sHplz">