===================================================================
@@ -278,6 +278,13 @@ This option is ignored apart from printi
@code{Warn}. The option will not be seen by specs and no @samp{OPT_}
enumeration value is defined for it.
+@item SeparateAlias
+For an option marked with @code{Joined}, @code{Separate} and
+@code{Alias}, the option only acts as an alias when passed a separate
+argument; with a joined argument it acts as a normal option, with an
+@samp{OPT_} enumeration value. This is for compatibility with the
+Java @option{-d} option and should not be used for new options.
+
@item Warn(@var{message})
If this option is used, output the warning @var{message}.
@var{message} is a format string, either taking a single operand with
===================================================================
@@ -174,7 +174,8 @@ generate_canonical_option (size_t opt_in
if (arg)
{
- if (option->flags & CL_SEPARATE)
+ if ((option->flags & CL_SEPARATE)
+ && !(option->flags & CL_SEPARATE_ALIAS))
{
decoded->canonical_option[0] = opt_text;
decoded->canonical_option[1] = arg;
@@ -217,6 +218,7 @@ decode_cmdline_option (const char **argv
const char *warn_message = NULL;
bool separate_arg_flag;
bool joined_arg_flag;
+ bool have_separate_arg = false;
opt = argv[0];
@@ -286,6 +288,8 @@ decode_cmdline_option (const char **argv
result = 2;
if (arg == NULL)
result = 1;
+ else
+ have_separate_arg = true;
}
else
/* Missing argument. */
@@ -298,6 +302,8 @@ decode_cmdline_option (const char **argv
result = 2;
if (arg == NULL)
result = 1;
+ else
+ have_separate_arg = true;
}
if (arg == NULL && (separate_arg_flag || joined_arg_flag))
@@ -305,7 +311,8 @@ decode_cmdline_option (const char **argv
/* Is this option an alias (or an ignored option, marked as an alias
of OPT_SPECIAL_ignore)? */
- if (option->alias_target != N_OPTS)
+ if (option->alias_target != N_OPTS
+ && (!(option->flags & CL_SEPARATE_ALIAS) || have_separate_arg))
{
size_t new_opt_index = option->alias_target;
===================================================================
@@ -93,6 +93,10 @@ Java Separate Alias(fbootclasspath=)
classpath
Java Separate Alias(fclasspath=)
+d
+Java Separate SeparateAlias Alias(foutput-class-dir=)
+; Different from language-independent -d with joined argument.
+
encoding
Java Separate Alias(fencoding=)
===================================================================
@@ -39,7 +39,7 @@ see the files COPYING3 and COPYING.RUNTI
|| (CHAR) == 'e' || (CHAR) == 'T' || (CHAR) == 'u' \
|| (CHAR) == 'I' || (CHAR) == 'J' || (CHAR) == 'm' \
|| (CHAR) == 'x' || (CHAR) == 'L' || (CHAR) == 'A' \
- || (CHAR) == 'B' )
+ || (CHAR) == 'B' || (CHAR) == 'd')
/* This defines which multi-letter switches take arguments. */
===================================================================
@@ -1085,7 +1085,7 @@ static const struct option_map option_ma
{"--debug", "-g", "oj"},
{"--define-macro", "-D", "aj"},
{"--dependencies", "-M", 0},
- {"--dump", "-d", "a"},
+ {"--dump", "-d", "aj"},
{"--dumpbase", "-dumpbase", "a"},
{"--dumpdir", "-dumpdir", "a"},
{"--encoding", "-fencoding=", "aj"},
@@ -1368,16 +1368,6 @@ translate_options (int *argcp, const cha
if (nskip + i > argc)
nskip = argc - i;
- /* Convert -d with a separate argument to
- -foutput-class-dir= for Java. */
- if (c == 'd' && p[1] == 0 && argv[i + 1] != NULL)
- {
- newv[newindex++] = concat ("-foutput-class-dir=", argv[i + 1],
- NULL);
- nskip = 0;
- i += 2;
- }
-
while (nskip > 0)
{
newv[newindex++] = argv[i++];
===================================================================
@@ -0,0 +1,9 @@
+/* --dump= should translate to -d with joined operand. */
+/* { dg-do compile } */
+/* { dg-options "--dump=a" } */
+
+void f (void)
+{
+}
+
+/* { dg-final { cleanup-rtl-dump "*" } } */
===================================================================
@@ -71,12 +71,12 @@ extern const unsigned int cl_options_cou
extern const char *const lang_names[];
extern const unsigned int cl_lang_count;
-#define CL_PARAMS (1 << 14) /* Fake entry. Used to display --param info with --help. */
-#define CL_WARNING (1 << 15) /* Enables an (optional) warning message. */
-#define CL_OPTIMIZATION (1 << 16) /* Enables an (optional) optimization. */
-#define CL_DRIVER (1 << 17) /* Driver option. */
-#define CL_TARGET (1 << 18) /* Target-specific option. */
-#define CL_COMMON (1 << 19) /* Language-independent. */
+#define CL_PARAMS (1 << 13) /* Fake entry. Used to display --param info with --help. */
+#define CL_WARNING (1 << 14) /* Enables an (optional) warning message. */
+#define CL_OPTIMIZATION (1 << 15) /* Enables an (optional) optimization. */
+#define CL_DRIVER (1 << 16) /* Driver option. */
+#define CL_TARGET (1 << 17) /* Target-specific option. */
+#define CL_COMMON (1 << 18) /* Language-independent. */
#define CL_MIN_OPTION_CLASS CL_PARAMS
#define CL_MAX_OPTION_CLASS CL_COMMON
@@ -86,6 +86,7 @@ extern const unsigned int cl_lang_count;
This distinction is important because --help will not list options
which only have these higher bits set. */
+#define CL_SEPARATE_ALIAS (1 << 19) /* Option is an alias when used with separate argument. */
#define CL_NO_DRIVER_ARG (1 << 20) /* Option takes no argument in the driver. */
#define CL_REJECT_DRIVER (1 << 21) /* Reject this option in the driver. */
#define CL_SAVE (1 << 22) /* Target-specific option for attribute. */
===================================================================
@@ -334,7 +334,9 @@ for (i = 0; i < n_opts; i++) {
enum_string = enum " = " enum_value ","
# Aliases do not get enumeration names.
- if (flag_set_p("Alias.*", flags[i])) {
+ if ((flag_set_p("Alias.*", flags[i]) \
+ && !flag_set_p("SeparateAlias", flags[i])) \
+ || flag_set_p("Ignore", flags[i])) {
enum_string = "/* " enum_string " */"
}
===================================================================
@@ -543,6 +543,9 @@ fdump-
Common Joined RejectNegative
-fdump-<type> Dump various compiler internals to a file
+fdump-final-insns
+Driver RejectNegative
+
fdump-final-insns=
Common RejectNegative Joined Var(flag_dump_final_insns)
-fdump-final-insns=filename Dump to filename the insns at the end of translation
===================================================================
@@ -81,6 +81,7 @@ function switch_flags (flags)
test_flag("Driver", flags, " | CL_DRIVER") \
test_flag("RejectDriver", flags, " | CL_REJECT_DRIVER") \
test_flag("NoDriverArg", flags, " | CL_NO_DRIVER_ARG") \
+ test_flag("SeparateAlias", flags, " | CL_SEPARATE_ALIAS") \
test_flag("Save", flags, " | CL_SAVE") \
test_flag("Joined", flags, " | CL_JOINED") \
test_flag("JoinedOrMissing", flags, " | CL_JOINED | CL_MISSING_OK") \
===================================================================
@@ -1135,12 +1135,14 @@ i[34567]86-*-darwin*)
# support.
with_cpu=${with_cpu:-generic}
tmake_file="${tmake_file} t-slibgcc-darwin i386/t-crtpc i386/t-crtfm"
+ extra_options="${extra_options} i386/darwin.opt"
lto_binary_reader=lto-macho
;;
x86_64-*-darwin*)
with_cpu=${with_cpu:-generic}
tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc-darwin i386/t-crtpc i386/t-crtfm"
tm_file="${tm_file} ${cpu_type}/darwin64.h"
+ extra_options="${extra_options} i386/darwin.opt"
lto_binary_reader=lto-macho
;;
i[34567]86-*-elf*)
@@ -1811,6 +1813,7 @@ mips*-*-openbsd*)
mips*-sde-elf*)
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/sde.h"
tmake_file="mips/t-sde mips/t-libgcc-mips16"
+ extra_options="${extra_options} mips/sde.opt"
case "${with_newlib}" in
yes)
# newlib / libgloss.
===================================================================
@@ -0,0 +1,22 @@
+; Darwin options for IA32 port.
+;
+; Copyright (C) 2010 Free Software Foundation, Inc.
+;
+; This file is part of GCC.
+;
+; GCC is free software; you can redistribute it and/or modify it under
+; the terms of the GNU General Public License as published by the Free
+; Software Foundation; either version 3, or (at your option) any later
+; version.
+;
+; GCC is distributed in the hope that it will be useful, but WITHOUT
+; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+; License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with GCC; see the file COPYING3. If not see
+; <http://www.gnu.org/licenses/>.
+
+mdynamic-no-pic
+Target RejectNegative Ignore
===================================================================
@@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler.
MIPS SDE version.
- Copyright (C) 2003, 2004, 2007, 2008, 2009
+ Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of GCC.
@@ -42,13 +42,6 @@ along with GCC; see the file COPYING3.
things like LINK_SPEC easier to write. */ \
"%{!EB:%{!EL:%(endian_spec)}}", \
\
- /* -mcode-xonly is a traditional alias for -mcode-readable=pcrel and \
- -mno-data-in-code is a traditional alias for -mcode-readable=no. \
- The latter trumps the former. */ \
- "%{mno-data-in-code: -mcode-readable=no}", \
- "%{!mcode-readable=no: %{mcode-xonly: -mcode-readable=pcrel}}", \
- "%<mno-data-in-code %<mcode-xonly", \
- \
/* Configuration-independent MIPS rules. */ \
BASE_DRIVER_SELF_SPECS
===================================================================
@@ -0,0 +1,28 @@
+; MIPS SDE options.
+;
+; Copyright (C) 2010 Free Software Foundation, Inc.
+;
+; This file is part of GCC.
+;
+; GCC is free software; you can redistribute it and/or modify it under
+; the terms of the GNU General Public License as published by the Free
+; Software Foundation; either version 3, or (at your option) any later
+; version.
+;
+; GCC is distributed in the hope that it will be useful, but WITHOUT
+; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+; License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with GCC; see the file COPYING3. If not see
+; <http://www.gnu.org/licenses/>.
+
+; -mcode-xonly is a traditional alias for -mcode-readable=pcrel and
+; -mno-data-in-code is a traditional alias for -mcode-readable=no.
+
+mno-data-in-code
+Target RejectNegative Alias(mcode-readable=, no)
+
+mcode-xonly
+Target RejectNegative Alias(mcode-readable=, pcrel)