diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2012-11-24 11:53:55 +0100 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2012-11-24 13:24:13 +0100 |
commit | e5138db510efb61523be92c225d8c65eb985fff0 (patch) | |
tree | 00558ed4bdfbd188459dde48e12a662c8b887f67 /tcg | |
parent | 211da99290c8d570eee78f3f534f7e7d9d8f9da8 (diff) | |
download | qemu-e5138db510efb61523be92c225d8c65eb985fff0.zip qemu-e5138db510efb61523be92c225d8c65eb985fff0.tar.gz qemu-e5138db510efb61523be92c225d8c65eb985fff0.tar.bz2 |
tcg: mark local temps as MEM in dead_temp()
In dead_temp, local temps should always be marked as back to memory,
even if they have not been allocated (i.e. they are discared before
cross a basic block).
It fixes the following assertion in target-xtensa:
qemu-system-xtensa: tcg/tcg.c:1665: temp_save: Assertion `s->temps[temp].val_type == 2 || s->temps[temp].fixed_reg' failed.
Aborted
Reported-by: Max Filippov <jcmvbkbc@gmail.com>
Tested-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'tcg')
-rw-r--r-- | tcg/tcg.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -1615,7 +1615,7 @@ static inline void temp_dead(TCGContext *s, int temp) if (ts->val_type == TEMP_VAL_REG) { s->reg_to_temp[ts->reg] = -1; } - if (temp < s->nb_globals || (ts->temp_local && ts->mem_allocated)) { + if (temp < s->nb_globals || ts->temp_local) { ts->val_type = TEMP_VAL_MEM; } else { ts->val_type = TEMP_VAL_DEAD; |