From patchwork Thu Dec 2 00:49:52 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joern Rennecke X-Patchwork-Id: 73922 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 31FF3B70D5 for ; Thu, 2 Dec 2010 11:48:49 +1100 (EST) Received: (qmail 16617 invoked by alias); 2 Dec 2010 00:48:47 -0000 Received: (qmail 16608 invoked by uid 22791); 2 Dec 2010 00:48:45 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL, BAYES_00, MIME_QP_LONG_LINE, RCVD_IN_DNSWL_LOW, TW_CR X-Spam-Check-By: sourceware.org Received: from c60.cesmail.net (HELO c60.cesmail.net) (216.154.195.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 02 Dec 2010 00:48:40 +0000 Received: from unknown (HELO webmail2) ([192.168.1.183]) by c60.cesmail.net with ESMTP; 01 Dec 2010 19:48:26 -0500 Received: from 89.241.155.143 ([89.241.155.143]) by webmail.spamcop.net (Horde MIME library) with HTTP; Wed, 01 Dec 2010 19:49:52 -0500 Message-ID: <20101201194952.bsvkqv26m8k44osg-nzlynne@webmail.spamcop.net> Date: Wed, 01 Dec 2010 19:49:52 -0500 From: Joern Rennecke To: gcc-patches@gcc.gnu.org Subject: RFA: Fix microblaze ada --enable-werror-always build MIME-Version: 1.0 User-Agent: Internet Messaging Program (IMP) H3 (4.1.4) 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 By hookizing the consumer side of ASM_OUTPUT_IDENT, we no longer need to worry about how different target definition of this macro might affect our assorted frontends in various ways. bootstrapped & regression tested on x86_64-pc-linux-gnu cross-tested on x86_64-pc-linux-gnu for targets: alpha-linux-gnu arc-elf arm-eabi avr-elf cris-elf crx-elf fr30-elf h8300-elf hppa-linux-gnu ia64-elf iq2000-elf lm32-elf m32c-elf m32r-elf m68hc11-elf m68k-elf mcore-elf mep-elf microblaze-elf mips-elf mn10300-elf moxie-elf pdp11-aout picochip-elf ppc-elf rx-elf s390-linux-gnu score-elf sh-elf sparc-elf spu-elf v850-elf xstormy16-elf xtensa-elf bootstrapped & regression tested on i686-pc-linux-gnu cross-tested on i686-pc-linux-gnu for targets: bfin-elf frv-elf microblaze-elf mmix-knuth-mmixware vax-linux-gnu 2010-12-01 Joern Rennecke PR46738 gcc: * targhooks.c (legacy_asm_output_ident): New function. * targhooks.h (legacy_asm_output_ident): Declare. * target.def (asm_out): New hook output_ident. gcc/c-family: * c-lex.c (cb_ident): Use targetm.asm_out.output_ident. gcc/ada: * gcc-interface/Make-lang.in (ada/trans.o): Depend on $(TARGET_H). * gcc-interface/trans.c: Include target.h . (gigi): Use targetm.asm_out.output_ident . Index: targhooks.c =================================================================== --- targhooks.c (revision 167318) +++ targhooks.c (working copy) @@ -371,6 +371,16 @@ return false; } +/* Implementation of TARGET_ASM_OUTPUT_IDENT using the old macro. */ +void +legacy_asm_output_ident (FILE *stream ATTRIBUTE_UNUSED, + const char *string ATTRIBUTE_UNUSED) +{ +#ifdef ASM_OUTPUT_IDENT + ASM_OUTPUT_IDENT (stream, string); +#endif +} + /* True if MODE is valid for the target. By "valid", we mean able to be manipulated in non-trivial ways. In particular, this means all the arithmetic is supported. Index: targhooks.h =================================================================== --- targhooks.h (revision 167318) +++ targhooks.h (working copy) @@ -66,6 +66,7 @@ extern void default_print_operand_address (FILE *, rtx); extern bool default_print_operand_punct_valid_p (unsigned char); extern bool default_asm_output_addr_const_extra (FILE *, rtx); +extern void legacy_asm_output_ident (FILE *stream, const char *); extern bool default_scalar_mode_supported_p (enum machine_mode); extern bool targhook_words_big_endian (void); Index: c-family/c-lex.c =================================================================== --- c-family/c-lex.c (revision 167318) +++ c-family/c-lex.c (working copy) @@ -165,18 +165,16 @@ unsigned int ARG_UNUSED (line), const cpp_string * ARG_UNUSED (str)) { -#ifdef ASM_OUTPUT_IDENT if (!flag_no_ident) { /* Convert escapes in the string. */ cpp_string cstr = { 0, 0 }; if (cpp_interpret_string (pfile, str, 1, &cstr, CPP_STRING)) { - ASM_OUTPUT_IDENT (asm_out_file, (const char *) cstr.text); + targetm.asm_out.output_ident (asm_out_file, (const char *) cstr.text); free (CONST_CAST (unsigned char *, cstr.text)); } } -#endif } /* Called at the start of every non-empty line. TOKEN is the first Index: target.def =================================================================== --- target.def (revision 167318) +++ target.def (working copy) @@ -524,6 +524,15 @@ bool ,(unsigned char code), default_print_operand_punct_valid_p) +/* Wrapper for ASM_OUTPUT_IDENT. When this is upgraded to a documented hook + and the macro is eventually compiletely eliminated, the default should be + changed to hook_void_FILEptr_constcharptr. */ +DEFHOOK_UNDOC +(output_ident, + "", + void, (FILE *stream, const char *string), + legacy_asm_output_ident) + HOOK_VECTOR_END (asm_out) /* Functions relating to instruction scheduling. All of these Index: ada/gcc-interface/Make-lang.in =================================================================== --- ada/gcc-interface/Make-lang.in (revision 167318) +++ ada/gcc-interface/Make-lang.in (working copy) @@ -1246,7 +1246,7 @@ $(COMPILER) -c $(ALL_COMPILERFLAGS) -I.. $(ALL_CPPFLAGS) $< -o $@ ada/trans.o : ada/gcc-interface/trans.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ - $(TM_H) $(TREE_H) $(FLAGS_H) output.h tree-iterator.h \ + $(TM_H) $(TREE_H) $(FLAGS_H) output.h tree-iterator.h $(TARGET_H) \ $(GIMPLE_H) ada/gcc-interface/ada.h ada/adadecode.h ada/types.h \ ada/atree.h ada/elists.h ada/namet.h ada/nlists.h ada/snames.h \ ada/stringt.h ada/uintp.h ada/urealp.h ada/fe.h ada/sinfo.h ada/einfo.h \ Index: ada/gcc-interface/trans.c =================================================================== --- ada/gcc-interface/trans.c (revision 167318) +++ ada/gcc-interface/trans.c (working copy) @@ -34,6 +34,7 @@ #include "libfuncs.h" /* For set_stack_check_libfunc. */ #include "tree-iterator.h" #include "gimple.h" +#include "target.h" #include "ada.h" #include "adadecode.h" @@ -591,12 +592,10 @@ VEC_safe_push (tree, gc, gnu_program_error_label_stack, NULL_TREE); /* Process any Pragma Ident for the main unit. */ -#ifdef ASM_OUTPUT_IDENT if (Present (Ident_String (Main_Unit))) - ASM_OUTPUT_IDENT + targetm.asm_out.output_ident (asm_out_file, TREE_STRING_POINTER (gnat_to_gnu (Ident_String (Main_Unit)))); -#endif /* If we are using the GCC exception mechanism, let GCC know. */ if (Exception_Mechanism == Back_End_Exceptions)