From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9163 invoked by alias); 27 Oct 2015 12:42:36 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 9148 invoked by uid 89); 27 Oct 2015 12:42:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: fencepost.gnu.org Received: from fencepost.gnu.org (HELO fencepost.gnu.org) (208.118.235.10) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 27 Oct 2015 12:42:34 +0000 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51236) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1Zr3aC-00012k-Du for gcc-patches@gnu.org; Tue, 27 Oct 2015 08:42:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zr3a7-0007zd-VI for gcc-patches@gnu.org; Tue, 27 Oct 2015 08:42:31 -0400 Received: from relay1.mentorg.com ([192.94.38.131]:61457) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zr3a7-0007zW-Ot for gcc-patches@gnu.org; Tue, 27 Oct 2015 08:42:27 -0400 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-FEM-03.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1Zr3a6-0001ih-9b from Tom_deVries@mentor.com ; Tue, 27 Oct 2015 05:42:26 -0700 Received: from [127.0.0.1] (137.202.0.76) by SVR-IES-FEM-03.mgc.mentorg.com (137.202.0.108) with Microsoft SMTP Server id 14.3.224.2; Tue, 27 Oct 2015 12:42:25 +0000 Subject: [PATCH, 1/6] Simplify constraint handling To: Richard Biener References: <562E0CF5.8000606@mentor.com> <562E5381.5@mentor.com> <562F26E2.40906@mentor.com> <562F6D1A.4010001@mentor.com> CC: Richard Biener , "gcc-patches@gnu.org" From: Tom de Vries Message-ID: <562F711F.80900@mentor.com> Date: Tue, 27 Oct 2015 12:49:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <562F6D1A.4010001@mentor.com> Content-Type: multipart/mixed; boundary="------------000705080403060903000302" X-detected-operating-system: by eggs.gnu.org: Windows NT kernel [generic] [fuzzy] X-Received-From: 192.94.38.131 X-SW-Source: 2015-10/txt/msg02882.txt.bz2 --------------000705080403060903000302 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1314 On 27/10/15 13:24, Tom de Vries wrote: > Thinking it over a bit more, I realized the constraint handling started > to be messy. I've reworked the patch series to simplify that first. > > 1 Simplify constraint handling > 2 Rename make_restrict_var_constraints to make_param_constraints > 3 Add recursion to make_param_constraints > 4 Add handle_param parameter to create_variable_info_for_1 > 5 Handle recursive restrict pointer in create_variable_info_for_1 > 6 Handle restrict struct fields recursively > > Currently doing bootstrap and regtest on x86_64. > > I'll repost the patch series in reply to this message. This patch gets rid of this bit of code in intra_create_variable_infos: ... if (restrict_pointer_p) make_constraint_from_global_restrict (p, "PARM_RESTRICT"); else .. I already proposed to remove it here ( https://gcc.gnu.org/ml/gcc-patches/2015-10/msg02426.html ) but there is a problem with that approach: It can happen that restrict_pointer_p is true, but p->only_restrict_pointers is false. This happens with fipa-pta, when create_function_info_for created a varinfo for the parameter before intra_create_variable_infos was called. The patch handles that case now by setting p->only_restrict_pointers. Thanks, - Tom --------------000705080403060903000302 Content-Type: text/x-patch; name="0001-Simplify-constraint-handling.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="0001-Simplify-constraint-handling.patch" Content-length: 1474 Simplify constraint handling 2015-10-27 Tom de Vries * tree-ssa-structalias.c (intra_create_variable_infos): Simplify constraint handling. --- gcc/tree-ssa-structalias.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 5e070bc..4610914 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -5884,6 +5884,8 @@ intra_create_variable_infos (struct function *fn) p = create_variable_info_for_1 (t, alias_get_name (t)); insert_vi_for_tree (t, p); } + else if (restrict_pointer_p) + p->only_restrict_pointers = 1; /* For restrict qualified pointers build a representative for the pointed-to object. Note that this ends up handling @@ -5902,17 +5904,12 @@ intra_create_variable_infos (struct function *fn) continue; } - if (restrict_pointer_p) - make_constraint_from_global_restrict (p, "PARM_RESTRICT"); - else + for (; p; p = vi_next (p)) { - for (; p; p = vi_next (p)) - { - if (p->only_restrict_pointers) - make_constraint_from_global_restrict (p, "PARM_RESTRICT"); - else if (p->may_have_pointers) - make_constraint_from (p, nonlocal_id); - } + if (p->only_restrict_pointers) + make_constraint_from_global_restrict (p, "PARM_RESTRICT"); + else if (p->may_have_pointers) + make_constraint_from (p, nonlocal_id); } } -- 1.9.1 --------------000705080403060903000302--