aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/misc.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2010-09-03 14:17:46 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2010-09-03 14:17:46 +0100
commitffb7f675d87f084475e930790a103dfc0bc0e995 (patch)
treee782da908afaddbd8b2551e5d776b643a26ec8fc /gcc/ada/gcc-interface/misc.c
parentf4dae9fcc09f1324cfb0f6228e3a607a73e33a4e (diff)
downloadgcc-ffb7f675d87f084475e930790a103dfc0bc0e995.zip
gcc-ffb7f675d87f084475e930790a103dfc0bc0e995.tar.gz
gcc-ffb7f675d87f084475e930790a103dfc0bc0e995.tar.bz2
re PR ada/45499 (Ada bootstrap broken)
PR ada/45499 * gcc-interface/misc.c (gnat_init_options): Allow options with empty canonical form. Generate a single save_argv element from -I options. From-SVN: r163817
Diffstat (limited to 'gcc/ada/gcc-interface/misc.c')
-rw-r--r--gcc/ada/gcc-interface/misc.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index c104e29..080e988 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -273,13 +273,24 @@ gnat_init_options (unsigned int decoded_options_count,
for (i = 0; i < decoded_options_count; i++)
{
if (decoded_options[i].errors
- || decoded_options[i].opt_index == OPT_SPECIAL_unknown)
+ || decoded_options[i].opt_index == OPT_SPECIAL_unknown
+ || decoded_options[i].canonical_option_num_elements == 0)
continue;
- gcc_assert (decoded_options[i].canonical_option_num_elements >= 1
- && decoded_options[i].canonical_option_num_elements <= 2);
- save_argv[save_argc++] = decoded_options[i].canonical_option[0];
- if (decoded_options[i].canonical_option_num_elements >= 2)
- save_argv[save_argc++] = decoded_options[i].canonical_option[1];
+ if (decoded_options[i].opt_index == OPT_I)
+ {
+ gcc_assert (decoded_options[i].canonical_option_num_elements == 2);
+ save_argv[save_argc++]
+ = concat (decoded_options[i].canonical_option[0],
+ decoded_options[i].canonical_option[1], NULL);
+ }
+ else
+ {
+ gcc_assert (decoded_options[i].canonical_option_num_elements >= 1
+ && decoded_options[i].canonical_option_num_elements <= 2);
+ save_argv[save_argc++] = decoded_options[i].canonical_option[0];
+ if (decoded_options[i].canonical_option_num_elements >= 2)
+ save_argv[save_argc++] = decoded_options[i].canonical_option[1];
+ }
}
save_argv[save_argc] = NULL;