Searched hist:"9 c43b68de628a1e2cba556adfb71c17028eb802e" (Results 1 – 1 of 1) sorted by relevance
/qemu/tcg/ |
H A D | tcg.c | b3a1be87bac3a6aaa59bb88c1410f170dc9b22d5 Tue Oct 30 23:50:15 UTC 2012 Aurelien Jarno <aurelien@aurel32.net> tcg: don't remove op if output needs to be synced to memory
Commit 9c43b68de628a1e2cba556adfb71c17028eb802e do not correctly check for dead outputs when they need to be synced to memory in case of half-dead operations.
Fix that by applying the same pattern than for the default case.
Tested-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> 9c43b68de628a1e2cba556adfb71c17028eb802e Tue Oct 09 19:53:07 UTC 2012 Aurelien Jarno <aurelien@aurel32.net> tcg: rework liveness analysis
Rework the liveness analysis by tracking temps that need to go back to memory in addition to dead temps tracking. This allows to mark output arguments as "need sync", and to synchronize them back to memory as soon as they are not written anymore. This way even arguments mapping to globals can be marked as "dead", avoiding moves to a new register when input and outputs are aliased.
In addition it means that registers are freed as soon as temps are not used anymore, instead of waiting for a basic block end or an op with side effects. This reduces register spilling especially on CPUs with few registers, and spread the mov over all the TB, increasing the performances on in-order CPUs.
Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
|