Signed-off-by: Richard Henderson <[email protected]>
---
include/tcg/tcg-temp-internal.h | 2 ++
tcg/tcg-internal.h | 5 +++++
tcg/tcg.c | 4 ++++
3 files changed, 11 insertions(+)
diff --git a/include/tcg/tcg-temp-internal.h b/include/tcg/tcg-temp-internal.h
index 98f91e68b70..932ad1aeebe 100644
--- a/include/tcg/tcg-temp-internal.h
+++ b/include/tcg/tcg-temp-internal.h
@@ -31,6 +31,8 @@
void tcg_temp_free_internal(TCGTemp *);
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(TCGTemp, tcg_temp_free_internal)
+
void tcg_temp_free_i32(TCGv_i32 arg);
void tcg_temp_free_i64(TCGv_i64 arg);
void tcg_temp_free_i128(TCGv_i128 arg);
diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h
index 2620c23b448..d480d10878c 100644
--- a/tcg/tcg-internal.h
+++ b/tcg/tcg-internal.h
@@ -74,6 +74,11 @@ bool tcg_target_has_memory_bswap(MemOp memop);
QEMU_RET_NONNULL TCGTemp *tcg_temp_new_internal(TCGType type, TCGTempKind
kind);
+static inline TCGTemp *tcg_temp_new_ebb(TCGType type)
+{
+ return tcg_temp_new_internal(type, TEMP_EBB);
+}
+
/*
* Locate or create a read-only temporary that is a constant.
* This kind of temporary need not be freed, but for convenience
diff --git a/tcg/tcg.c b/tcg/tcg.c
index 489df0e7386..38e5928ccf9 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -2202,6 +2202,10 @@ void tcg_temp_free_internal(TCGTemp *ts)
{
TCGContext *s = tcg_ctx;
+ if (ts == NULL) {
+ return;
+ }
+
switch (ts->kind) {
case TEMP_CONST:
case TEMP_TB:
--
2.53.0