diff options
author | Joseph Myers <joseph@codesourcery.com> | 2010-09-03 14:17:46 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2010-09-03 14:17:46 +0100 |
commit | ffb7f675d87f084475e930790a103dfc0bc0e995 (patch) | |
tree | e782da908afaddbd8b2551e5d776b643a26ec8fc /gcc/ada/gcc-interface/misc.c | |
parent | f4dae9fcc09f1324cfb0f6228e3a607a73e33a4e (diff) | |
download | gcc-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.c | 23 |
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; |