diff mbox

[RFC,10/14] tcg: Map TCG_CALL_DUMMY_ARG to NULL

Message ID 1479325910-9060-11-git-send-email-rth@twiddle.net
State New
Headers show

Commit Message

Richard Henderson Nov. 16, 2016, 7:51 p.m. UTC
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tcg.c | 36 +++++++++++++-----------------------
 tcg/tcg.h |  2 +-
 2 files changed, 14 insertions(+), 24 deletions(-)
diff mbox

Patch

diff --git a/tcg/tcg.c b/tcg/tcg.c
index e8b3fbb..c62f161 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -1415,7 +1415,6 @@  static void liveness_pass_1(TCGContext *s)
         bool have_opc_new2;
         TCGLifeData arg_life = 0;
         TCGTemp *arg_ts;
-        TCGArg arg_idx;
 
         TCGOp * const op = &s->gen_op_buf[oi];
         TCGArg * const args = &s->gen_opparam_buf[op->args];
@@ -1472,19 +1471,15 @@  static void liveness_pass_1(TCGContext *s)
 
                     /* record arguments that die in this helper */
                     for (i = nb_oargs; i < nb_iargs + nb_oargs; i++) {
-                        arg_idx = arg_index(args[i]);
-                        if (arg_idx != TCG_CALL_DUMMY_ARG) {
-                            arg_ts = arg_temp(args[i]);
-                            if (arg_ts->state & TS_DEAD) {
-                                arg_life |= DEAD_ARG << i;
-                            }
+                        arg_ts = arg_temp(args[i]);
+                        if (arg_ts && (arg_ts->state & TS_DEAD)) {
+                            arg_life |= DEAD_ARG << i;
                         }
                     }
                     /* input arguments are live for preceding opcodes */
                     for (i = nb_oargs; i < nb_iargs + nb_oargs; i++) {
-                        arg_idx = arg_index(args[i]);
-                        if (arg_idx != TCG_CALL_DUMMY_ARG) {
-                            arg_ts = arg_temp(args[i]);
+                        arg_ts = arg_temp(args[i]);
+                        if (arg_ts) {
                             arg_ts->state &= ~TS_DEAD;
                         }
                     }
@@ -1690,12 +1685,10 @@  static bool liveness_pass_2(TCGContext *s)
 
         /* Make sure that input arguments are available.  */
         for (i = nb_oargs; i < nb_iargs + nb_oargs; i++) {
-            arg_idx = arg_index(args[i]);
-            /* Note this unsigned test catches TCG_CALL_ARG_DUMMY too.  */
-            if (arg_idx < nb_globals) {
-                arg_ts = arg_temp(args[i]);
+            arg_ts = arg_temp(args[i]);
+            if (arg_ts) {
                 dir_ts = arg_ts->state_ptr;
-                if (dir_ts != 0 && arg_ts->state == TS_DEAD) {
+                if (dir_ts && arg_ts->state == TS_DEAD) {
                     TCGOpcode lopc = (arg_ts->type == TCG_TYPE_I32
                                       ? INDEX_op_ld_i32
                                       : INDEX_op_ld_i64);
@@ -1716,12 +1709,10 @@  static bool liveness_pass_2(TCGContext *s)
            No action is required except keeping temp_state up to date
            so that we reload when needed.  */
         for (i = nb_oargs; i < nb_iargs + nb_oargs; i++) {
-            arg_idx = arg_index(args[i]);
-            /* Note this unsigned test catches TCG_CALL_ARG_DUMMY too.  */
-            if (arg_idx < nb_globals) {
-                arg_ts = arg_temp(args[i]);
+            arg_ts = arg_temp(args[i]);
+            if (arg_ts) {
                 dir_ts = arg_ts->state_ptr;
-                if (dir_ts != 0) {
+                if (dir_ts) {
                     args[i] = temp_idx(dir_ts);
                     changes = true;
                     if (IS_DEAD_ARG(i)) {
@@ -2403,9 +2394,8 @@  static void tcg_reg_alloc_call(TCGContext *s, int nb_oargs, int nb_iargs,
     /* assign input registers */
     tcg_regset_set(allocated_regs, s->reserved_regs);
     for(i = 0; i < nb_regs; i++) {
-        arg = args[nb_oargs + i];
-        if (arg != TCG_CALL_DUMMY_ARG) {
-            ts = arg_temp(arg);
+        ts = arg_temp(args[nb_oargs + i]);
+        if (ts) {
             reg = tcg_target_call_iarg_regs[i];
             tcg_reg_free(s, reg, allocated_regs);
 
diff --git a/tcg/tcg.h b/tcg/tcg.h
index acc0cfb..2670cab 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -483,7 +483,7 @@  typedef TCGv_ptr TCGv_env;
 #define TCG_CALL_NO_WG_SE       (TCG_CALL_NO_WG | TCG_CALL_NO_SE)
 
 /* used to align parameters */
-#define TCG_CALL_DUMMY_ARG      ((TCGArg)(-1))
+#define TCG_CALL_DUMMY_ARG      0
 
 typedef enum {
     /* Used to indicate the type of accesses on which ordering