From patchwork Mon Aug 2 16:43:30 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 60556 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 5E9F5B70A7 for ; Tue, 3 Aug 2010 02:43:43 +1000 (EST) Received: (qmail 26413 invoked by alias); 2 Aug 2010 16:43:40 -0000 Received: (qmail 26402 invoked by uid 22791); 2 Aug 2010 16:43:38 -0000 X-SWARE-Spam-Status: No, hits=-0.4 required=5.0 tests=AWL, BAYES_50, TW_BJ, TW_LG, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 02 Aug 2010 16:43:33 +0000 Received: (qmail 19317 invoked from network); 2 Aug 2010 16:43:31 -0000 Received: from unknown (HELO digraph.polyomino.org.uk) (joseph@127.0.0.2) by mail.codesourcery.com with ESMTPA; 2 Aug 2010 16:43:31 -0000 Received: from jsm28 (helo=localhost) by digraph.polyomino.org.uk with local-esmtp (Exim 4.69) (envelope-from ) id 1Ofy6s-0001Ht-Ab for gcc-patches@gcc.gnu.org; Mon, 02 Aug 2010 16:43:30 +0000 Date: Mon, 2 Aug 2010 16:43:30 +0000 (UTC) From: "Joseph S. Myers" To: gcc-patches@gcc.gnu.org Subject: Miscellaneous options fixes Message-ID: MIME-Version: 1.0 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 This patch fixes a collection of miscellaneous issues with command-line option handling in preparation for sharing infrastructure between the driver and cc1, to avoid that sharing causing unwanted changes in behavior or perturbing where bugs appear. These issues were all found in the course of analysing differences between the command-line interfaces to the driver and the core compilers. * "-G n" with separate operand needs SWITCH_TAKES_ARG support which was missing on alpha and ia64. * The SWITCH_TAKES_ARG support for -G n on iq2000 was an unnecessary copy from some other target since iq2000 doesn't support the -G option. * The bfin specs passing -G* to the assembler and linker also appear to be a bogus copy from another target since there is no -Gn support in those tools for bfin. * WORD_SWITCH_TAKES_ARG didn't handle the Darwin -iframework option. * The rx -patch= option alias was useless as the driver wouldn't accept or pass it down so it could only be passed directly to cc1; this patch removes it. * Similarly, the C option -print-pch-checksum was useless and unused as it could only be passed directly to cc1, and is removed. * Several relics of the -a/-ax block profiling, removed by , were left: -a references in specs and a --profile-blocks option alias. These are removed, or in the case of one %{a*} changed to pass down the only -a* options needing to be passed down, -aux-info options. (-auxbase* would have been accepted by that spec, but not processed correctly by the driver for lack of WORD_SWITCH_TAKES_ARG handling. Thus it would always have been useless to pass them to the driver, so making it reject them by tightening the spec seems appropriate. There is already another spec to handle -ansi, the remaining -a* option.) * Although -imultilib is essentially an option for the driver to generate, not for the user to use, since %{i*} specs will pass it down DEFAULT_WORD_SWITCH_TAKES_ARG ought to know about how to handle it correctly. * config/rs6000/sysv4.h had a definition of SWITCH_TAKES_ARG that did not inherit from DEFAULT_SWITCH_TAKES_ARG, failed to handle the Fortran -J option and still handled the -b and -V options that have been removed. Once those issues are fixed it becomes identical to the default except for also handling -G, so is made to inherit accordingly. * There were long option aliases --quiet and --silent for a short option -q that doesn't actually exist in the driver; these useless aliases are removed. Bootstrapped with no regressions on x86_64-unknown-linux-gnu. Also tested building cc1 for: alpha-dec-osf5.1 bfin-elf i686-darwin ia64-linux-gnu iq2000-elf powerpc-linux-gnu rx-elf. OK to commit? 2010-08-02 Joseph Myers * config/alpha/alpha.h (SWITCH_TAKES_ARG): Define. * config/alpha/osf5.h (LIB_SPEC): Don't handle -a. * config/bfin/bfin.h (ASM_SPEC, LINK_SPEC): Don't pass -G* options. * config/darwin.h (WORD_SWITCH_TAKES_ARG): Handle -iframework. * config/ia64/ia64.h (SWITCH_TAKES_ARG): Define. * config/iq2000/iq2000.h (SWITCH_TAKES_ARG): Remove. * config/rs6000/sysv4.h (SWITCH_TAKES_ARG): Define using DEFAULT_SWITCH_TAKES_ARG. * config/rx/rx.opt (-patch=): Remove option. * config/rx/rx.c (rx_handle_option): Don't handle OPT_patch_. * defaults.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Handle -imultilib. * doc/invoke.texi (RX Options): Remove -patch=. * gcc.c (cc1_options): Pass -aux-info* instead of -a* options. (option_map): Remove --profile-blocks, --quiet and --silent. ada: 2010-08-02 Joseph Myers * gcc-interface/lang-specs.h: Don't pass -a options. c-family: 2010-08-02 Joseph Myers * c.opt (-print-pch-checksum): Remove option. * c-opts.c (c_common_handle_option): Don't handle OPT_print_pch_checksum. Index: gcc/doc/invoke.texi =================================================================== --- gcc/doc/invoke.texi (revision 162722) +++ gcc/doc/invoke.texi (working copy) @@ -790,7 +790,7 @@ See RS/6000 and PowerPC Options. @emph{RX Options} @gccoptlist{-m64bit-doubles -m32bit-doubles -fpu -nofpu@gol --mcpu= -patch=@gol +-mcpu=@gol -mbig-endian-data -mlittle-endian-data @gol -msmall-data @gol -msim -mno-sim@gol @@ -15816,9 +15816,7 @@ use then the FPU hardware will not be us This is because the RX FPU instructions are themselves unsafe. @item -mcpu=@var{name} -@itemx -patch=@var{name} @opindex -mcpu -@opindex -patch Selects the type of RX CPU to be targeted. Currently three types are supported, the generic @var{RX600} and @var{RX200} series hardware and the specific @var{RX610} cpu. The default is @var{RX600}. Index: gcc/c-family/c.opt =================================================================== --- gcc/c-family/c.opt (revision 162722) +++ gcc/c-family/c.opt (working copy) @@ -952,10 +952,6 @@ print-objc-runtime-info ObjC ObjC++ Generate C header of platform-specific features -print-pch-checksum -C ObjC C++ ObjC++ -Print a checksum of the executable for PCH validity checking, and stop - remap C ObjC C++ ObjC++ Remap file names when including files Index: gcc/c-family/c-opts.c =================================================================== --- gcc/c-family/c-opts.c (revision 162722) +++ gcc/c-family/c-opts.c (working copy) @@ -849,11 +849,6 @@ c_common_handle_option (size_t scode, co print_struct_values = 1; break; - case OPT_print_pch_checksum: - c_common_print_pch_checksum (stdout); - exit_after_options = true; - break; - case OPT_remap: cpp_opts->remap = 1; break; Index: gcc/defaults.h =================================================================== --- gcc/defaults.h (revision 162722) +++ gcc/defaults.h (working copy) @@ -50,7 +50,7 @@ see the files COPYING3 and COPYING.RUNTI || !strcmp (STR, "idirafter") || !strcmp (STR, "iprefix") \ || !strcmp (STR, "iwithprefix") || !strcmp (STR, "iwithprefixbefore") \ || !strcmp (STR, "iquote") || !strcmp (STR, "isystem") \ - || !strcmp (STR, "isysroot") \ + || !strcmp (STR, "isysroot") || !strcmp (STR, "imultilib") \ || !strcmp (STR, "-param") || !strcmp (STR, "specs") \ || !strcmp (STR, "MF") || !strcmp (STR, "MT") || !strcmp (STR, "MQ") \ || !strcmp (STR, "fintrinsic-modules-path") \ Index: gcc/gcc.c =================================================================== --- gcc/gcc.c (revision 162722) +++ gcc/gcc.c (working copy) @@ -858,7 +858,7 @@ static const char *cpp_debug_options = " static const char *cc1_options = "%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\ %{!iplugindir*:%{fplugin*:%:find-plugindir()}}\ - %1 %{!Q:-quiet} %{!dumpbase:-dumpbase %B} %{d*} %{m*} %{a*}\ + %1 %{!Q:-quiet} %{!dumpbase:-dumpbase %B} %{d*} %{m*} %{aux-info*}\ %{fcompare-debug-second:%:compare-debug-auxbase-opt(%b)} \ %{!fcompare-debug-second:%{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}}%{!c:%{!S:-auxbase %b}} \ %{g*} %{O*} %{W*&pedantic*} %{w} %{std*&ansi&trigraphs}\ @@ -1199,12 +1199,9 @@ static const struct option_map option_ma {"--print-sysroot", "-print-sysroot", 0}, {"--print-sysroot-headers-suffix", "-print-sysroot-headers-suffix", 0}, {"--profile", "-p", 0}, - {"--profile-blocks", "-a", 0}, - {"--quiet", "-q", 0}, {"--resource", "-fcompile-resource=", "aj"}, {"--save-temps", "-save-temps", 0}, {"--shared", "-shared", 0}, - {"--silent", "-q", 0}, {"--specs", "-specs=", "aj"}, {"--static", "-static", 0}, {"--std", "-std=", "aj"}, Index: gcc/ada/gcc-interface/lang-specs.h =================================================================== --- gcc/ada/gcc-interface/lang-specs.h (revision 162722) +++ gcc/ada/gcc-interface/lang-specs.h (working copy) @@ -36,7 +36,7 @@ %{nostdinc*} %{nostdlib*}\ -dumpbase %{.adb:%b.adb}%{.ads:%b.ads}%{!.adb:%{!.ads:%b.ada}}\ %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} \ - %{O*} %{W*} %{w} %{p} %{pg:-p} %{a} %{d*} %{f*}\ + %{O*} %{W*} %{w} %{p} %{pg:-p} %{d*} %{f*}\ %{coverage:-fprofile-arcs -ftest-coverage} " "%{gnatea:-gnatez} %{g*&m*} " #if defined(TARGET_VXWORKS_RTP) Index: gcc/config/alpha/alpha.h =================================================================== --- gcc/config/alpha/alpha.h (revision 162722) +++ gcc/config/alpha/alpha.h (working copy) @@ -96,6 +96,9 @@ along with GCC; see the file COPYING3. while (0) #endif +#define SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G') + #define WORD_SWITCH_TAKES_ARG(STR) \ (!strcmp (STR, "rpath") || DEFAULT_WORD_SWITCH_TAKES_ARG(STR)) Index: gcc/config/alpha/osf5.h =================================================================== --- gcc/config/alpha/osf5.h (revision 162722) +++ gcc/config/alpha/osf5.h (working copy) @@ -84,7 +84,7 @@ along with GCC; see the file COPYING3. -lpdf. */ #define LIB_SPEC \ -"%{p|pg:-lprof1%{pthread|threads:_r} -lpdf} %{a:-lprof2} \ +"%{p|pg:-lprof1%{pthread|threads:_r} -lpdf} \ %{threads: -lpthreads} %{pthread|threads: -lpthread -lmach -lexc} -lc" /* Pass "-G 8" to ld because Alpha's CC does. Pass -O3 if we are Index: gcc/config/rx/rx.c =================================================================== --- gcc/config/rx/rx.c (revision 162722) +++ gcc/config/rx/rx.c (working copy) @@ -2130,7 +2130,6 @@ rx_handle_option (size_t code, const cha return value >= 0 && value <= 4; case OPT_mcpu_: - case OPT_patch_: if (strcasecmp (arg, "RX610") == 0) rx_cpu_type = RX610; else if (strcasecmp (arg, "RX200") == 0) Index: gcc/config/rx/rx.opt =================================================================== --- gcc/config/rx/rx.opt (revision 162722) +++ gcc/config/rx/rx.opt (working copy) @@ -46,10 +46,6 @@ mcpu= Target RejectNegative Joined Var(rx_cpu_name) Report Specify the target RX cpu type. -patch= -Target RejectNegative Joined Var(rx_cpu_name) -Alias for -mcpu. - ;--------------------------------------------------- mbig-endian-data Index: gcc/config/iq2000/iq2000.h =================================================================== --- gcc/config/iq2000/iq2000.h (revision 162722) +++ gcc/config/iq2000/iq2000.h (working copy) @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler. Vitesse IQ2000 processors - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -21,10 +21,6 @@ /* Driver configuration. */ -#undef SWITCH_TAKES_ARG -#define SWITCH_TAKES_ARG(CHAR) \ - (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G') - /* The svr4.h LIB_SPEC with -leval and --*group tacked on */ #undef LIB_SPEC #define LIB_SPEC "%{!shared:%{!symbolic:--start-group -lc -leval -lgcc --end-group}}" Index: gcc/config/ia64/ia64.h =================================================================== --- gcc/config/ia64/ia64.h (revision 162722) +++ gcc/config/ia64/ia64.h (working copy) @@ -53,6 +53,9 @@ do { \ #define ASM_EXTRA_SPEC "" +#define SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G') + /* Variables which are this size or smaller are put in the sdata/sbss sections. */ extern unsigned int ia64_section_threshold; Index: gcc/config/rs6000/sysv4.h =================================================================== --- gcc/config/rs6000/sysv4.h (revision 162722) +++ gcc/config/rs6000/sysv4.h (working copy) @@ -1,6 +1,6 @@ /* Target definitions for GNU compiler for PowerPC running System V.4 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of GCC. @@ -520,12 +520,8 @@ do { \ /* Override svr4.h definition. */ #undef SWITCH_TAKES_ARG -#define SWITCH_TAKES_ARG(CHAR) \ - ((CHAR) == 'D' || (CHAR) == 'U' || (CHAR) == 'o' \ - || (CHAR) == 'e' || (CHAR) == 'T' || (CHAR) == 'u' \ - || (CHAR) == 'I' || (CHAR) == 'm' || (CHAR) == 'x' \ - || (CHAR) == 'L' || (CHAR) == 'A' || (CHAR) == 'V' \ - || (CHAR) == 'B' || (CHAR) == 'b' || (CHAR) == 'G') +#define SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G') extern int fixuplabelno; Index: gcc/config/darwin.h =================================================================== --- gcc/config/darwin.h (revision 162722) +++ gcc/config/darwin.h (working copy) @@ -236,6 +236,7 @@ extern GTY(()) int darwin_ms_struct; !strcmp (STR, "sectobjectsymbols") ? 2 : \ !strcmp (STR, "segcreate") ? 3 : \ !strcmp (STR, "dylinker_install_name") ? 1 : \ + !strcmp (STR, "iframework") ? 1 : \ 0) #define SUBTARGET_C_COMMON_OVERRIDE_OPTIONS do { \ Index: gcc/config/bfin/bfin.h =================================================================== --- gcc/config/bfin/bfin.h (revision 162722) +++ gcc/config/bfin/bfin.h (working copy) @@ -1,5 +1,5 @@ /* Definitions for the Blackfin port. - Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Analog Devices. This file is part of GCC. @@ -252,7 +252,7 @@ extern int target_flags; Defined in svr4.h. */ #undef ASM_SPEC #define ASM_SPEC "\ -%{G*} %{v} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \ +%{v} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \ %{mno-fdpic:-mnopic} %{mfdpic}" #define LINK_SPEC "\ @@ -262,7 +262,6 @@ extern int target_flags; %{static:-dn -Bstatic} \ %{shared:-G -Bdynamic} \ %{symbolic:-Bsymbolic} \ -%{G*} \ %{YP,*} \ %{Qy:} %{!Qn:-Qy} \ -init __init -fini __fini "