aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2015-05-06 11:16:35 +0100
committerPeter Maydell <peter.maydell@linaro.org>2015-05-06 11:16:35 +0100
commit38003aee196a96edccd4d64471beb1b67e9b2b17 (patch)
treee6cf9cb5107682511ffff265828240e0e1d81cb9
parent233353ec93e4541fa7ab1c53a922a6d5c2bfce7a (diff)
parent00c8fa9ffeee7458e5ed62c962faf638156c18da (diff)
Merge remote-tracking branch 'remotes/rth/tags/tcg-next-20150505' into staging
size reduction merge # gpg: Signature made Wed May 6 00:21:43 2015 BST using RSA key ID 4DD0279B # gpg: Good signature from "Richard Henderson <rth7680@gmail.com>" # gpg: aka "Richard Henderson <rth@redhat.com>" # gpg: aka "Richard Henderson <rth@twiddle.net>" * remotes/rth/tags/tcg-next-20150505: tcg: optimise memory layout of TCGTemp Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--tcg/tcg.h26
1 files changed, 14 insertions, 12 deletions
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 3d004ba276..fbb3daf14c 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -417,20 +417,19 @@ static inline TCGCond tcg_high_cond(TCGCond c)
}
}
-#define TEMP_VAL_DEAD 0
-#define TEMP_VAL_REG 1
-#define TEMP_VAL_MEM 2
-#define TEMP_VAL_CONST 3
+typedef enum TCGTempVal {
+ TEMP_VAL_DEAD,
+ TEMP_VAL_REG,
+ TEMP_VAL_MEM,
+ TEMP_VAL_CONST,
+} TCGTempVal;
-/* XXX: optimize memory layout */
typedef struct TCGTemp {
- TCGType base_type;
- TCGType type;
- int val_type;
- int reg;
- tcg_target_long val;
- int mem_reg;
- intptr_t mem_offset;
+ unsigned int reg:8;
+ unsigned int mem_reg:8;
+ TCGTempVal val_type:8;
+ TCGType base_type:8;
+ TCGType type:8;
unsigned int fixed_reg:1;
unsigned int mem_coherent:1;
unsigned int mem_allocated:1;
@@ -438,6 +437,9 @@ typedef struct TCGTemp {
basic blocks. Otherwise, it is not
preserved across basic blocks. */
unsigned int temp_allocated:1; /* never used for code gen */
+
+ tcg_target_long val;
+ intptr_t mem_offset;
const char *name;
} TCGTemp;