From patchwork Fri Sep 3 13:01:32 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joseph Myers X-Patchwork-Id: 63679 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id A194FB718F for ; Fri, 3 Sep 2010 23:01:43 +1000 (EST) Received: (qmail 12480 invoked by alias); 3 Sep 2010 13:01:41 -0000 Received: (qmail 12378 invoked by uid 22791); 3 Sep 2010 13:01:40 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL, BAYES_00, TW_RG, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 03 Sep 2010 13:01:36 +0000 Received: (qmail 25609 invoked from network); 3 Sep 2010 13:01:34 -0000 Received: from unknown (HELO digraph.polyomino.org.uk) (joseph@127.0.0.2) by mail.codesourcery.com with ESMTPA; 3 Sep 2010 13:01:34 -0000 Received: from jsm28 (helo=localhost) by digraph.polyomino.org.uk with local-esmtp (Exim 4.69) (envelope-from ) id 1OrVtc-0000kR-V3 for gcc-patches@gcc.gnu.org; Fri, 03 Sep 2010 13:01:32 +0000 Date: Fri, 3 Sep 2010 13:01:32 +0000 (UTC) From: "Joseph S. Myers" To: gcc-patches@gcc.gnu.org Subject: Fix Ada bootstrap (canonical -I option form) Message-ID: MIME-Version: 1.0 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org This patch fixes an Ada bootstrap issue caused by my options aliases changes. When gnat1 reconstitutes an argv array, it needs to generate -I options in joined form for the sake of Ada-language code requiring that form, and it is now possible for (ignored) options to have empty canonical form (although this should only arise if gnat1 is called directly with such an option or specs somehow generate such an option). Tested on i686-pc-linux-gnu to fix Ada-enabled bootstrap. OK to commit? 2010-09-03 Joseph Myers 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. Index: gcc/ada/gcc-interface/misc.c =================================================================== --- gcc/ada/gcc-interface/misc.c (revision 163785) +++ gcc/ada/gcc-interface/misc.c (working copy) @@ -273,13 +273,24 @@ gnat_init_options (unsigned int decoded_ 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;