[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 04/10] tcg/optimize: do copy propagation for all
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [PATCH v2 04/10] tcg/optimize: do copy propagation for all operations |
Date: |
Fri, 21 Sep 2012 21:43:12 +0200 |
It is possible to due copy propagation for all operations, even the one
that have side effects or clobber arguments (it only concerns input
arguments). That said, the call operation should be handled differently
due to the variable number of arguments.
Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Aurelien Jarno <address@hidden>
---
tcg/optimize.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 1904b39..aeb2225 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -378,8 +378,15 @@ static TCGArg *tcg_constant_folding(TCGContext *s,
uint16_t *tcg_opc_ptr,
op = gen_opc_buf[op_index];
def = &tcg_op_defs[op];
/* Do copy propagation */
- if (!(def->flags & (TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS))) {
- assert(op != INDEX_op_call);
+ if (op == INDEX_op_call) {
+ int nb_oargs = args[0] >> 16;
+ int nb_iargs = args[0] & 0xffff;
+ for (i = nb_oargs + 1; i < nb_oargs + nb_iargs + 1; i++) {
+ if (temps[args[i]].state == TCG_TEMP_COPY) {
+ args[i] = find_better_copy(s, args[i]);
+ }
+ }
+ } else {
for (i = def->nb_oargs; i < def->nb_oargs + def->nb_iargs; i++) {
if (temps[args[i]].state == TCG_TEMP_COPY) {
args[i] = find_better_copy(s, args[i]);
--
1.7.10.4
- Re: [Qemu-devel] [PATCH v2 10/10] tcg/optimize: add constant folding for deposit, (continued)
[Qemu-devel] [PATCH v2 02/10] tcg/optimize: check types in copy propagation, Aurelien Jarno, 2012/09/21
[Qemu-devel] [PATCH v2 07/10] tcg/optimize: further optimize brcond/movcond/setcond, Aurelien Jarno, 2012/09/21
[Qemu-devel] [PATCH v2 09/10] tcg: remove #ifdef #endif around TCGOpcode tests, Aurelien Jarno, 2012/09/21
[Qemu-devel] [PATCH v2 04/10] tcg/optimize: do copy propagation for all operations,
Aurelien Jarno <=
[Qemu-devel] [PATCH v2 05/10] tcg/optimize: optimize "op r, a, a => mov r, a", Aurelien Jarno, 2012/09/21
[Qemu-devel] [PATCH v2 03/10] tcg/optimize: rework copy progagation, Aurelien Jarno, 2012/09/21
Re: [Qemu-devel] [PATCH v2 00/10] tcg/optimize: rework copy propagation, Richard Henderson, 2012/09/21