-
Bug
-
Resolution: Unresolved
-
P4
-
22, 23
-
riscv
In some cases, e.g. deopt/exception handler, we trust that far_jump will be a total of 8 bytes.
If we for some reason need more than 8 bytes, e.g. code cache size somehow got bigger than we expected, we will assert/crash later.
As we at the call of "la_patachble" know that any other encoding than auipc will later crash, we can just "abort" there and then instead and save someone some cycles.
When we need the exact size of far_jump(), which we are saying is 8 bytes, we should call a fixed size far_jump(), which calls a fixed sized "la_patachble".
If we can't generate the wanted code due to encoding for materializing the address, we should assert, and in release we should abort compilation and make a big warning.
If we for some reason need more than 8 bytes, e.g. code cache size somehow got bigger than we expected, we will assert/crash later.
As we at the call of "la_patachble" know that any other encoding than auipc will later crash, we can just "abort" there and then instead and save someone some cycles.
When we need the exact size of far_jump(), which we are saying is 8 bytes, we should call a fixed size far_jump(), which calls a fixed sized "la_patachble".
If we can't generate the wanted code due to encoding for materializing the address, we should assert, and in release we should abort compilation and make a big warning.