<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/61045>61045</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Unable to handle inline assembly ends with compat-branch on MIPS
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
FlyGoat
</td>
</tr>
</table>
<pre>
Currently LLVM unable to handle the situation that a inline assembly ends with branch instruction and then compiler generate another CTI immediately.
It would leave compiler generated CTI in forbidden slot and crash at runtime.
Test case:
```
define i32 @foo0() nounwind {
entry:
%0 = tail call i32 asm "1: addiu $0, $$0, 1; beqzc $0, 1b;", "=r"() nounwind
ret i32 %0
}
```
Generate object file with:
```
llc -mtriple=mips64el-linux-gnuabi64 -mcpu=mips64r6 -filetype=obj ./broken-forbidden-slot.ll
```
Then dissemble with:
```
mips64el-linux-gnuabi64-objdump -d ./broken-forbidden-slot.o
./broken-forbidden-slot.o: file format elf64-tradlittlemips
Disassembly of section .text:
0000000000000000 <foo0>:
0: 24020001 li v0,1
4: d85ffffe beqzc v0,0 <foo0>
8: d81f0000 jrc ra
```
JRC lies in forbidden slot of BEQZC.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VE2TmzgQ_TXypQtKSIDxgUNsx6nZSqr2Y3YPexOoMZoVkldqZuL99VuA7cSTyahcAqz3ul-rP1SM5ugQa1ZsWbFfqZF6H-qDPX_yilaN1-d6N4aAjuwZPn_-6wuMTjUWgTz0yunprUeIhkZFxjugXhEoMM4ah6BixKGxZ0CnI7wY6qEJyrU9GBcpjO3MUU5PVhy0fjgZiwGO6DAoQlDOU48Bdo8PYIYBtVGE9pwyvmf8w7I_ELz40WqwqJ7xRyN6YTvofGiM1uggWk-z2zao2IMiCKMjM-Cd4WV_xEjQqohM3v3PSn75zZ8auyliIwWwnHfecyYqJjbg_OhejNPA1tsFio7C-WYNgImCA5N7IGUstMra2YyKAzAhMiY_gNLajMBEzpnYTc_ra8bkFhr897_2dpo1TG6ZEAtSMLkP89edmqvvgLRoFsUlELbevxngsn-6ZsY3T9gSdMbinNhvt3NPs7aFZKBgThaZ3A_mFMscbWKNG78mRzeqxpQ5JEN7Gm_noYRkskzn00TyzROkTBya4P9Bl9zymEx5TK19R-_jVFfaLHX4WulbtJ8ITHzzpMfhBIl-R4r_3vB7MPkBpjXfXufDoAjQdmWeUFDaGiKLk5Afq3Fv4q2pfAcRlxZKCb_Sq8D4qwVM7ua6lB-_Kz7gixiRc8E5z-CyrIHnqZyyGzBfgLoquq7r8Apcig8W9J2TK7G6ErNu1vEU2pkZ1DuJ--X3HViD8Y3G9R1sP_729y5d6VrqjdyoFdZZuV4XldhUYtXX603W5ZWWUopWFJusEwVKLJq2qDpZ5eXK1IILyYWosiwrhUjLfN3k7YZ3lWgKzTcs5zgoY1Nrn4fUh-PKxDhiXWY8L1ZWNWjjdWqGegIlzXiMLOfWRIrfaGTIYv3n66n58wE5zS9FyWVOegdfHn79YzUGW_dEpzilThyYOBwN9WOTtn5g4jC5uzySU_BTazJxmCVHJg6z6v8DAAD__2TWwsc">