From patchwork Wed Nov 30 17:30:32 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Anatoly Sokolov X-Patchwork-Id: 128539 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 79AC4B6F7F for ; Thu, 1 Dec 2011 04:30:42 +1100 (EST) Received: (qmail 19502 invoked by alias); 30 Nov 2011 17:30:38 -0000 Received: (qmail 19492 invoked by uid 22791); 30 Nov 2011 17:30:36 -0000 X-SWARE-Spam-Status: No, hits=0.1 required=5.0 tests=AWL, BAYES_00, KAM_THEBAT, RCVD_IN_DNSWL_NONE, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from contrabass.post.ru (HELO contrabass.corbina.net) (85.21.78.5) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 30 Nov 2011 17:30:21 +0000 Received: from corbina.ru (violin.corbina.net [195.14.50.30]) by contrabass.corbina.net (Postfix) with ESMTP id 79082CC04F; Wed, 30 Nov 2011 21:30:19 +0400 (MSK) Received: from [95.26.63.213] (account aesok@post.ru HELO Vista.beeline) by fe1-mc.corbina.ru (CommuniGate Pro SMTP 5.4.2) with ESMTPA id 52621159; Wed, 30 Nov 2011 21:30:19 +0400 Date: Wed, 30 Nov 2011 21:30:32 +0400 From: Anatoly Sokolov Message-ID: <466464314.20111130213032@post.ru> To: gcc-patches CC: Steve Ellcey Subject: [IA64] Hookize PRINT_OPERAND, PRINT_OPERAND_ADDRESS and PRINT_OPERAND_PUNCT_VALID_P MIME-Version: 1.0 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hello. This patch removes obsolete PRINT_OPERAND, PRINT_OPERAND_ADDRESS and PRINT_OPERAND_PUNCT_VALID_P macros from IA64 back end in the GCC and introduces equivalent TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS and TARGET_PRINT_OPERAND_PUNCT_VALID_P target hooks.  Bootstrapped and regression tested on ia64-unknown-linux-gnu. * config/ia64/ia64.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS, PRINT_OPERAND_PUNCT_VALID_P): Remove macros. * config/ia64/ia64-protos.h (ia64_print_operand, ia64_print_operand_address): Remove. * config/ia64/ia64.c (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS, TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define. (ia64_print_operand_punct_valid_p): New function. (ia64_print_operand, ia64_print_operand_address): Make static. Anatoly. Index: gcc/config/ia64/ia64.c =================================================================== --- gcc/config/ia64/ia64.c (revision 181759) +++ gcc/config/ia64/ia64.c (working copy) @@ -234,6 +234,10 @@ static void ia64_output_function_epilogue (FILE *, HOST_WIDE_INT); static void ia64_output_function_end_prologue (FILE *); +static void ia64_print_operand (FILE *, rtx, int); +static void ia64_print_operand_address (FILE *, rtx); +static bool ia64_print_operand_punct_valid_p (unsigned char code); + static int ia64_issue_rate (void); static int ia64_adjust_cost_2 (rtx, int, rtx, int, dw_t); static void ia64_sched_init (FILE *, int, int); @@ -383,6 +387,13 @@ #undef TARGET_ASM_FUNCTION_EPILOGUE #define TARGET_ASM_FUNCTION_EPILOGUE ia64_output_function_epilogue +#undef TARGET_PRINT_OPERAND +#define TARGET_PRINT_OPERAND ia64_print_operand +#undef TARGET_PRINT_OPERAND_ADDRESS +#define TARGET_PRINT_OPERAND_ADDRESS ia64_print_operand_address +#undef TARGET_PRINT_OPERAND_PUNCT_VALID_P +#define TARGET_PRINT_OPERAND_PUNCT_VALID_P ia64_print_operand_punct_valid_p + #undef TARGET_IN_SMALL_DATA_P #define TARGET_IN_SMALL_DATA_P ia64_in_small_data_p @@ -4966,7 +4977,7 @@ /* ??? Do we need this? It gets used only for 'a' operands. We could perhaps also call this from ia64_print_operand for memory addresses. */ -void +static void ia64_print_operand_address (FILE * stream ATTRIBUTE_UNUSED, rtx address ATTRIBUTE_UNUSED) { @@ -4997,7 +5008,7 @@ Linux kernel. v Print vector constant value as an 8-byte integer value. */ -void +static void ia64_print_operand (FILE * file, rtx x, int code) { const char *str; @@ -5284,6 +5295,14 @@ return; } + +/* Worker function for TARGET_PRINT_OPERAND_PUNCT_VALID_P. */ + +static bool +ia64_print_operand_punct_valid_p (unsigned char code) +{ + return (code == '+' || code == ','); +} /* Compute a (partial) cost for rtx X. Return true if the complete cost has been computed, and false if subexpressions should be Index: gcc/config/ia64/ia64.h =================================================================== --- gcc/config/ia64/ia64.h (revision 181759) +++ gcc/config/ia64/ia64.h (working copy) @@ -1512,27 +1512,6 @@ { "loc79", LOC_REG (79) }, \ } -/* A C compound statement to output to stdio stream STREAM the assembler syntax - for an instruction operand X. X is an RTL expression. */ - -#define PRINT_OPERAND(STREAM, X, CODE) \ - ia64_print_operand (STREAM, X, CODE) - -/* A C expression which evaluates to true if CODE is a valid punctuation - character for use in the `PRINT_OPERAND' macro. */ - -/* ??? Keep this around for now, as we might need it later. */ - -#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \ - ((CODE) == '+' || (CODE) == ',') - -/* A C compound statement to output to stdio stream STREAM the assembler syntax - for an instruction operand that is a memory reference whose address is X. X - is an RTL expression. */ - -#define PRINT_OPERAND_ADDRESS(STREAM, X) \ - ia64_print_operand_address (STREAM, X) - /* If defined, C string expressions to be used for the `%R', `%L', `%U', and `%I' options of `asm_fprintf' (see `final.c'). */ Index: gcc/config/ia64/ia64-protos.h =================================================================== --- gcc/config/ia64/ia64-protos.h (revision 181759) +++ gcc/config/ia64/ia64-protos.h (working copy) @@ -58,8 +58,6 @@ extern bool ia64_expand_load_address (rtx, rtx); extern int ia64_hard_regno_rename_ok (int, int); -extern void ia64_print_operand_address (FILE *, rtx); -extern void ia64_print_operand (FILE *, rtx, int); extern enum reg_class ia64_secondary_reload_class (enum reg_class, enum machine_mode, rtx); extern const char *get_bundle_name (int);