<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/134916>134916</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[MIPS] Compiler crash when using -O3
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hpoussin
</td>
</tr>
</table>
<pre>
Using clang version 20.1.2
clang -target "mipsel-w64-windows-gnu" -c test.cpp
```
typedef unsigned int size_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned uint32_t;
typedef unsigned long long uint64_t;
typedef unsigned int uintptr_t;
typedef signed char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;
size_t readULEB128(const uint8_t **data);
// read a pointer encoded value and advance pointer
static uintptr_t readEncodedPointer(const uint8_t **data, uint8_t encoding) {
const uint8_t *p = *data;
uintptr_t result = 0;
// first get value
switch (encoding & 0x0F) {
case 0x01:
result = readULEB128(&p);
break;
case 0x0A:
result = *((const int16_t *)p);
p += sizeof(int16_t);
break;
case 0x0B:
result = *((const int32_t *)p);
p += sizeof(int32_t);
break;
case 0x0C:
result = *((const int64_t *)p);
p += sizeof(int64_t);
break;
default:
// not supported
return 0;
}
*data = p;
return result;
}
int __gcc_personality_v0(const uint8_t* lsda)
{
uint8_t callSiteEncoding = *lsda++;
const uint8_t *p = 0;
while (1) {
uintptr_t start = readEncodedPointer(&p, callSiteEncoding);
size_t length = readEncodedPointer(&p, callSiteEncoding);
size_t landingPad = readEncodedPointer(&p, callSiteEncoding);
readULEB128(&p); // action value not used for C code
}
// No landing pad found, continue unwinding.
return 0;
}
```
gives
```
fatal error: error in backend: Not supported instr: <MCInst 45 <MCOperand Imm:0>>
```
Possible workaround: add `-O0`
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykVl1v6ygQ_TXkZZQIg-3GD35w0kaqtPe20tV9roghNlsCFuBku79-Bbbz0TbdSleK2gTOzDkzPoNhzslGC1GibIWy-xnrfWts2Xamd07q2dbwt_K3k7qBWjHdwEFYJ40GghfJgiBcIVwNO3PPbCM8IEL2snNCzY95Oj9Kzc3RzRvdI0JgXoMXzi_qrguxOR4_uPJvneBiB72OijhI7cHJf8WLR3T1GaBumYVear-8CXGtsT5ikvwmKGxTcnNbGd0MfwIwT28Cg-AA6bx9j7lU_JngQeenMkPWTwWedV3JQrgaugZWMP77r4dVQpaILGujnZ_aBYhUiFSceYZIcQpEZIPIJgYCg85I7YUFoWvDBYcDU70ApjkwfmC6FhMiUHrmZX0uP-Z4GAKfR9RXGtan1cgmdYNIAeguCAP4ENcBovcwRdMBdUnueuUjBp-KAxjL20nrPASrxoriljtKX7eAyHLiB0RywP_gzZUQ5kRYTBAdUsIl13XDEcm7U3MDcmsFe51-TpmqTzPF1pyf2miMYbm4ztoBIqsQE5662SGynGz0v9yrkftL4mC87xNHm94innjX36w5mPr71HEETqirgrnYsV75M-3oBG08uL7rjPWCnxT53urJNwDo7v7sn-i3qLab9kf8UMhotikkzO7LS1PXL52wzmimpH97OeD3o4BIBcrxOIshPGae7F4zpX5JLx5OxhyaNQSsYie-HJNTKcdWKhE8nlx6-nJwnGf27OUP8ztYev1B0rnt49GjhG58-yeJAE65mA5bz4z_Yb5b4zm5gdU-vNmGYy5Yo3eCw85YWEPg-2iHGPbTTBKhYwHfax61GO2l7gX0OrwEpW4Wl4bBV165eBE28iDcu7Ud80yBsNZYRKvhC0gNW1a_Cs3D2s9LL4PUzkcoousf68fgizQbfjx1woZD_HG_R7TCiD6EzzXfs3FObpWAo7GvzMaSaAWMc0A5nj8F2IyXlBe0YDNRJndpmqS4yJaztiQp2WZLwUnBE1Zky5QlOaaU7nJxh0XOZrIkmGQ4xcukoFm2XOQpq7cpzviW4iwrKEqx2DOpFkod9gtjm5l0rhdlQtMiyWeKbYVy8cpCiBZHiLuIkHCDsWUImm_7xqEUK-m8O6fx0qt41_nx-PwLZfewNvtOKmGhtsy1cGyFhj5ed-ZPdNZbVbbedy6cHPFpN9K3_XZRmz0im5B2_DfvrPlb1B6RTRTjENmMag8l-S8AAP__dcncKQ">