Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions target/i386/latx/translator/reg-alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,17 @@ IR2_OPND ra_alloc_itemp(void)
int itemp_reg_num;

itemp_reg_num = ra_alloc_itemp_num();
if (unlikely(itemp_reg_num < 0)) {
/*
* Do not let a failed allocation propagate as register number -1
* into the immediate cache lookup or IR2 operand construction. It
* would otherwise cause undefined behavior or corrupt generated code.
*/
fprintf(stderr,
"[LATX] itemp register exhausted, status=0x%x\n",
lsenv->tr_data->itemp_status);
abort();
}
#ifdef CONFIG_LATX_IMM_REG
if (option_imm_reg) {
int itemp_num = reg_itemp_reverse_map[itemp_reg_num];
Expand Down