From patchwork Sun Mar 18 22:16:02 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stefan Weil X-Patchwork-Id: 147442 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id BF11BB6FCF for ; Mon, 19 Mar 2012 09:16:32 +1100 (EST) Received: from localhost ([::1]:52958 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S9OOs-0004H6-Io for incoming@patchwork.ozlabs.org; Sun, 18 Mar 2012 18:16:30 -0400 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 Received: from localhost (v220110690675601.yourvserver.net.local [127.0.0.1]) by v220110690675601.yourvserver.net (Postfix) with ESMTP id 7959572800A4; Sun, 18 Mar 2012 23:16:04 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at weilnetz.de Received: from v220110690675601.yourvserver.net ([127.0.0.1]) by localhost (v220110690675601.yourvserver.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ff4GRtdrkAMP; Sun, 18 Mar 2012 23:16:04 +0100 (CET) Received: by v220110690675601.yourvserver.net (Postfix, from userid 1000) id 574A872800A1; Sun, 18 Mar 2012 23:16:04 +0100 (CET) From: Stefan Weil To: qemu-devel@nongnu.org, Blue Swirl Date: Sun, 18 Mar 2012 23:16:02 +0100 Message-Id: <1332108964-12716-1-git-send-email-sw@weilnetz.de> X-Mailer: git-send-email 1.7.9 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 78.47.199.172 Cc: Stefan Weil Subject: [Qemu-devel] [PATCH 1/3] Add support for target helper functions which don't return X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 Reviewed-by: Andreas Färber --- 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