From patchwork Sat Apr 27 02:57:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dehao Chen X-Patchwork-Id: 240075 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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id B93742C00F6 for ; Sat, 27 Apr 2013 12:58:00 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:date:message-id:subject:from:to:cc:content-type; q=dns; s=default; b=qSgH1g1s8yOsleP+fOJ7qQ3LKJjxIavP/NVWHeAMiq6 kLyRy/jU4VM0qlcKQS23pp8/r21sP+6r6eUQCGYmtIgPnhduTYJHTb+xQ+c+jC/a VHTSKGJ+8Smx37JJJXKhv7Qe/aSJTaBGlw+HX9MfZwkuMDH0r3olTHpg5AiDca5A = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:date:message-id:subject:from:to:cc:content-type; s=default; bh=iEVzGw8ITYHmwBKVnbK0qXArJjo=; b=XN6oKU/xgHZZcnQFr v3Bi+RmKwAstG29F9hiT3FdUTxGVZxXWRCv8D+3oJDdhbvnhFd/i093knFRZtv3Z x1L4Awvkf+P7CIp3YZmQE/3l68Bi1qQpby5sHc6sAMGBPHGOtl4pm4vyF/zAeZJo Mt4jswFWXgUr9FcahyuUsIJruw= Received: (qmail 31576 invoked by alias); 27 Apr 2013 02:57:53 -0000 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 Received: (qmail 31566 invoked by uid 89); 27 Apr 2013 02:57:53 -0000 X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.1 Received: from mail-ee0-f50.google.com (HELO mail-ee0-f50.google.com) (74.125.83.50) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Sat, 27 Apr 2013 02:57:52 +0000 Received: by mail-ee0-f50.google.com with SMTP id b15so866757eek.9 for ; Fri, 26 Apr 2013 19:57:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:date:message-id:subject:from:to:cc :content-type:x-gm-message-state; bh=ktpZQKil0oVD4sbDe/6q9k/hfajj0D4lejvRvKHLGdw=; b=HmQGL0iFFZ/KuOyRTkH941ytVm5SArrPa88vA/iFG+R28To87IsvZ4CmXOERW7+Gum 2agDQYJNUm9RHbqLlX74KXqDAKnajNsgnf82N21Xob0aAhX3zcOsyD2MNDBr7VxUiE7B 00fwijqsopdakA7yvIpEFmXb0U61HRNIDCJX/vUsQ1s2Kj1ry5jI+dZeU1laAJAma0Ev vkRuT/PrvBkhGDNAhnURuULmZ6Vbar1jHQndEZ/XRXVxaQ9ipyCTywjsKZUvYhdKgcoe D/YCRFqimSNagCJfOgcSMUo6kMRIxTyc/XGbkebjo0PSWkkEKhjrQN2YMtSOFPNiyae8 5xgw== MIME-Version: 1.0 X-Received: by 10.15.35.71 with SMTP id f47mr38588572eev.15.1367031469951; Fri, 26 Apr 2013 19:57:49 -0700 (PDT) Received: by 10.14.69.198 with HTTP; Fri, 26 Apr 2013 19:57:49 -0700 (PDT) Date: Fri, 26 Apr 2013 19:57:49 -0700 Message-ID: Subject: [GOOGLE] Disallow importing modules with different --std From: Dehao Chen To: GCC Patches Cc: David Li X-Gm-Message-State: ALoCoQkDkvQK7U6yLRsnuUbXtOzLLJxXo4wv2IpsiptyZ/QwYgy2N9uGYxVIb/x8u4HqtztfRAoHDgC+s7HaTGx4SW6NytT026sAoysYODMmIZo6LSDtsbXJDxE6k7LLmVtyQtPgZfjJDxaGEqeyauk1zgAfW03YsQGaPoCX2VAen27Ipk+k76lBC5/+oXoVOmDDzO/QouLM This patch forbids modules to be imported as aux module if its --std is different with the primary module. Bootstrapped and passed regression test. OK for google branches? Thanks, Dehao for (i = 0; force_matching_cg_opts[i].opt_str; i++) @@ -426,6 +427,8 @@ incompatible_cl_args (struct gcov_module_info* mod char *option_string = mod_info1->string_array[start_index1 + i]; check_cg_opts (cg_opts1, option_string); + if (strstr (option_string, "-std=")) + std_opts1 = option_string; slot = htab_find_slot (option_tab1, option_string, INSERT); if (!*slot) @@ -445,6 +448,8 @@ incompatible_cl_args (struct gcov_module_info* mod char *option_string = mod_info2->string_array[start_index2 + i]; check_cg_opts (cg_opts2, option_string); + if (strstr (option_string, "-std=")) + std_opts2 = option_string; slot = htab_find_slot (option_tab2, option_string, INSERT); if (!*slot) @@ -454,6 +459,10 @@ incompatible_cl_args (struct gcov_module_info* mod } } + has_incompatible_std = + std_opts1 != std_opts2 && (std_opts1 == NULL || std_opts2 == NULL + || strcmp (std_opts1, std_opts2)); + /* Compare warning options. If these mismatch, we emit a warning. */ if (num_warning_opts1 != num_warning_opts2) warning_mismatch = true; @@ -498,7 +507,7 @@ incompatible_cl_args (struct gcov_module_info* mod htab_delete (option_tab1); htab_delete (option_tab2); return ((flag_ripa_disallow_opt_mismatch && non_warning_mismatch) - || has_any_incompatible_cg_opts); + || has_any_incompatible_cg_opts || has_incompatible_std); } /* Support for module sorting based on user specfication. */ Index: gcc/coverage.c =================================================================== --- gcc/coverage.c (revision 198353) +++ gcc/coverage.c (working copy) @@ -384,6 +384,7 @@ incompatible_cl_args (struct gcov_module_info* mod char **warning_opts2 = XNEWVEC (char *, mod_info2->num_cl_args); char **non_warning_opts1 = XNEWVEC (char *, mod_info1->num_cl_args); char **non_warning_opts2 = XNEWVEC (char *, mod_info2->num_cl_args); + char *std_opts1 = NULL, *std_opts2 = NULL; unsigned int i, num_warning_opts1 = 0, num_warning_opts2 = 0; unsigned int num_non_warning_opts1 = 0, num_non_warning_opts2 = 0; bool warning_mismatch = false; @@ -396,7 +397,7 @@ incompatible_cl_args (struct gcov_module_info* mod mod_info2->num_bracket_paths + mod_info2->num_cpp_defines + mod_info2->num_cpp_includes; - bool *cg_opts1, *cg_opts2, has_any_incompatible_cg_opts; + bool *cg_opts1, *cg_opts2, has_any_incompatible_cg_opts, has_incompatible_std; unsigned int num_cg_opts = 0;