|
@@ -630,13 +630,6 @@ static inline void *tcg_splitwx_to_rw(const void *rx)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-static inline size_t temp_idx(TCGTemp *ts)
|
|
|
-{
|
|
|
- ptrdiff_t n = ts - tcg_ctx->temps;
|
|
|
- tcg_debug_assert(n >= 0 && n < tcg_ctx->nb_temps);
|
|
|
- return n;
|
|
|
-}
|
|
|
-
|
|
|
static inline TCGArg temp_arg(TCGTemp *ts)
|
|
|
{
|
|
|
return (uintptr_t)ts;
|
|
@@ -647,16 +640,25 @@ static inline TCGTemp *arg_temp(TCGArg a)
|
|
|
return (TCGTemp *)(uintptr_t)a;
|
|
|
}
|
|
|
|
|
|
-/* Using the offset of a temporary, relative to TCGContext, rather than
|
|
|
- its index means that we don't use 0. That leaves offset 0 free for
|
|
|
- a NULL representation without having to leave index 0 unused. */
|
|
|
+#ifdef CONFIG_DEBUG_TCG
|
|
|
+size_t temp_idx(TCGTemp *ts);
|
|
|
+TCGTemp *tcgv_i32_temp(TCGv_i32 v);
|
|
|
+#else
|
|
|
+static inline size_t temp_idx(TCGTemp *ts)
|
|
|
+{
|
|
|
+ return ts - tcg_ctx->temps;
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * Using the offset of a temporary, relative to TCGContext, rather than
|
|
|
+ * its index means that we don't use 0. That leaves offset 0 free for
|
|
|
+ * a NULL representation without having to leave index 0 unused.
|
|
|
+ */
|
|
|
static inline TCGTemp *tcgv_i32_temp(TCGv_i32 v)
|
|
|
{
|
|
|
- uintptr_t o = (uintptr_t)v;
|
|
|
- TCGTemp *t = (void *)tcg_ctx + o;
|
|
|
- tcg_debug_assert(offsetof(TCGContext, temps[temp_idx(t)]) == o);
|
|
|
- return t;
|
|
|
+ return (void *)tcg_ctx + (uintptr_t)v;
|
|
|
}
|
|
|
+#endif
|
|
|
|
|
|
static inline TCGTemp *tcgv_i64_temp(TCGv_i64 v)
|
|
|
{
|