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]

Miscellaneous options fixes


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?

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]