From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37382) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9a5w-0003QS-PM for qemu-devel@nongnu.org; Mon, 19 Mar 2012 06:45:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S9a5q-0007g8-5N for qemu-devel@nongnu.org; Mon, 19 Mar 2012 06:45:44 -0400 Received: from cantor2.suse.de ([195.135.220.15]:37321 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9a5p-0007fv-SX for qemu-devel@nongnu.org; Mon, 19 Mar 2012 06:45:38 -0400 Message-ID: <4F670E50.1020705@suse.de> Date: Mon, 19 Mar 2012 11:45:36 +0100 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1332108964-12716-1-git-send-email-sw@weilnetz.de> In-Reply-To: <1332108964-12716-1-git-send-email-sw@weilnetz.de> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [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: Stefan Weil Cc: Blue Swirl , qemu-devel@nongnu.org Am 18.03.2012 23:16, schrieb Stefan Weil: > Most functions which handle exceptions don't return. >=20 > With a compiler attribute (added by QEMU_NORETURN), > gcc can optimize the code. Do you have any numbers? >=20 > Signed-off-by: Stefan Weil Seems like a sensible optimization, Reviewed-by: Andreas F=E4rber Andreas > --- > def-helper.h | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) >=20 > 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) > =20 > @@ -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 > =20 > /* 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)) > =20 > #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)) > =20 > #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)) > =20 > #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 =3D=3D 64) > #define dh_is_64bit(t) glue(dh_is_64bit_, dh_alias(t)) > =20 > #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 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg