From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:51233) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrUNm-00055n-Hk for qemu-devel@nongnu.org; Thu, 11 Aug 2011 08:29:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QrUNl-0007Qh-9j for qemu-devel@nongnu.org; Thu, 11 Aug 2011 08:29:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:64428) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QrUNk-0007Qd-VW for qemu-devel@nongnu.org; Thu, 11 Aug 2011 08:29:05 -0400 Message-ID: <4E43CAE9.3080209@redhat.com> Date: Thu, 11 Aug 2011 15:28:25 +0300 From: Avi Kivity MIME-Version: 1.0 References: <1313059839-2445-1-git-send-email-agraf@suse.de> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] TCG: Add preprocessor guards for optional tcg ops List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Graf Cc: qemu-devel Developers , Kirill Batuzov , Blue Swirl , =?ISO-8859-1?Q?Andreas_F=E4rber?= , David Gibson On 08/11/2011 02:40 PM, Alexander Graf wrote: > On 11.08.2011, at 13:24, malc wrote: > > > On Thu, 11 Aug 2011, Alexander Graf wrote: > > > >> While compiling current HEAD on a ppc64 box, I was confronted with the > >> following compile errors: > >> > >> tcg/optimize.c: In function ?tcg_constant_folding?: > >> tcg/optimize.c:546: error: ?INDEX_op_not_i32? undeclared (first use in this function) > >> tcg/optimize.c:546: error: (Each undeclared identifier is reported only once > >> tcg/optimize.c:546: error: for each function it appears in.) > >> tcg/optimize.c:546: error: ?INDEX_op_not_i64? undeclared (first use in this function) > >> tcg/optimize.c:573: error: ?INDEX_op_ext32u_i64? undeclared (first use in this function) > >> make[1]: *** [tcg/optimize.o] Error 1 > >> > >> Obviously, the optimize.c tries to use TCG opcode constants that are optional > >> and thus not defined in some targets, such as ppc64. > >> > >> This patch guards them with the proper #ifdefs, so compilation works again. > >> > >> Signed-off-by: Alexander Graf > >> --- > >> tcg/optimize.c | 8 +++++++- > >> 1 files changed, 7 insertions(+), 1 deletions(-) > >> > >> diff --git a/tcg/optimize.c b/tcg/optimize.c > >> index 7eb5eb1..7b4954c 100644 > >> --- a/tcg/optimize.c > >> +++ b/tcg/optimize.c > >> @@ -543,7 +543,11 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr, > >> gen_args += 2; > >> args += 2; > >> break; > >> +#if ((TCG_TARGET_REG_BITS == 32)&& defined(TCG_TARGET_HAS_not_i32)) || \ > >> + ((TCG_TARGET_REG_BITS == 64)&& defined(TCG_TARGET_HAS_not_i32)&& \ > >> + defined(TCG_TARGET_HAS_not_i64)) > >> CASE_OP_32_64(not): > >> +#endif > >> #ifdef TCG_TARGET_HAS_ext8s_i32 > >> case INDEX_op_ext8s_i32: > >> #endif > >> @@ -568,8 +572,10 @@ static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr, > >> #ifdef TCG_TARGET_HAS_ext16u_i64 > >> case INDEX_op_ext16u_i64: > >> #endif > >> -#if TCG_TARGET_REG_BITS == 64 > >> +#if (TCG_TARGET_REG_BITS == 64)&& defined(TCG_TARGET_HAS_ext32s_i64) > >> case INDEX_op_ext32s_i64: > >> +#endif > >> +#if (TCG_TARGET_REG_BITS == 64)&& defined(TCG_TARGET_HAS_ext32u_i64) > >> case INDEX_op_ext32u_i64: > >> #endif > >> if (temps[args[1]].state == TCG_TEMP_CONST) { > >> > > > > Or (not even compile tested): > > Sure, but then the next target would pop up with optionals not implemented. The real alternative would be to make these ops non-optional :) > Or to have automatic generation of the optionals based on the primitives, if the optionals are not present. -- error compiling committee.c: too many arguments to function