aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/opts-common.c')
-rw-r--r--gcc/opts-common.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index 40822a7..8299edd 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -174,7 +174,8 @@ generate_canonical_option (size_t opt_index, const char *arg, int value,
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, unsigned int lang_mask,
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, unsigned int lang_mask,
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, unsigned int lang_mask,
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, unsigned int lang_mask,
/* 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;