From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:33784) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9OOX-0003aj-2q for qemu-devel@nongnu.org; Sun, 18 Mar 2012 18:16:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S9OOT-0001G8-Tb for qemu-devel@nongnu.org; Sun, 18 Mar 2012 18:16:08 -0400 Received: from v220110690675601.yourvserver.net ([78.47.199.172]:58673) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9OOT-0001Fz-NV for qemu-devel@nongnu.org; Sun, 18 Mar 2012 18:16:05 -0400 From: Stefan Weil Date: Sun, 18 Mar 2012 23:16:02 +0100 Message-Id: <1332108964-12716-1-git-send-email-sw@weilnetz.de> Subject: [Qemu-devel] [PATCH 1/3] Add support for target helper functions which don't return List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Blue Swirl Cc: Stefan Weil Most functions which handle exceptions don't return. With a compiler attribute (added by QEMU_NORETURN), gcc can optimize the code. Signed-off-by: Stefan Weil --- def-helper.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/def-helper.h b/def-helper.h index 0e70c31..b98ff69 100644 --- a/def-helper.h +++ b/def-helper.h @@ -39,6 +39,7 @@ #endif #define dh_alias_ptr ptr #define dh_alias_void void +#define dh_alias_noreturn noreturn #define dh_alias_env ptr #define dh_alias(t) glue(dh_alias_, t) @@ -52,36 +53,42 @@ #define dh_ctype_tl target_ulong #define dh_ctype_ptr void * #define dh_ctype_void void +#define dh_ctype_noreturn void QEMU_NORETURN #define dh_ctype_env CPUArchState * #define dh_ctype(t) dh_ctype_##t /* We can't use glue() here because it falls foul of C preprocessor recursive expansion rules. */ #define dh_retvar_decl0_void void +#define dh_retvar_decl0_noreturn void #define dh_retvar_decl0_i32 TCGv_i32 retval #define dh_retvar_decl0_i64 TCGv_i64 retval #define dh_retvar_decl0_ptr TCGv_ptr retval #define dh_retvar_decl0(t) glue(dh_retvar_decl0_, dh_alias(t)) #define dh_retvar_decl_void +#define dh_retvar_decl_noreturn #define dh_retvar_decl_i32 TCGv_i32 retval, #define dh_retvar_decl_i64 TCGv_i64 retval, #define dh_retvar_decl_ptr TCGv_ptr retval, #define dh_retvar_decl(t) glue(dh_retvar_decl_, dh_alias(t)) #define dh_retvar_void TCG_CALL_DUMMY_ARG +#define dh_retvar_noreturn TCG_CALL_DUMMY_ARG #define dh_retvar_i32 GET_TCGV_i32(retval) #define dh_retvar_i64 GET_TCGV_i64(retval) #define dh_retvar_ptr GET_TCGV_ptr(retval) #define dh_retvar(t) glue(dh_retvar_, dh_alias(t)) #define dh_is_64bit_void 0 +#define dh_is_64bit_noreturn 0 #define dh_is_64bit_i32 0 #define dh_is_64bit_i64 1 #define dh_is_64bit_ptr (TCG_TARGET_REG_BITS == 64) #define dh_is_64bit(t) glue(dh_is_64bit_, dh_alias(t)) #define dh_is_signed_void 0 +#define dh_is_signed_noreturn 0 #define dh_is_signed_i32 0 #define dh_is_signed_s32 1 #define dh_is_signed_i64 0 -- 1.7.9