This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Miscellaneous options fixes


On Mon, Aug 2, 2010 at 6:43 PM, Joseph S. Myers <joseph@codesourcery.com> wrote:
> 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
> ?<http://gcc.gnu.org/ml/gcc-patches/2001-12/msg00147.html>, 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?

Ok.

Thanks,
Richard.

> 2010-08-02 ?Joseph Myers ?<joseph@codesourcery.com>
>
> ? ? ? ?* 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 ?<joseph@codesourcery.com>
>
> ? ? ? ?* gcc-interface/lang-specs.h: Don't pass -a options.
>
> c-family:
> 2010-08-02 ?Joseph Myers ?<joseph@codesourcery.com>
>
> ? ? ? ?* 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 "
>
> --
> Joseph S. Myers
> joseph@codesourcery.com
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]