From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2066) id 3F127393C882; Wed, 10 Jun 2020 03:38:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3F127393C882 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1591760322; bh=/iDT4uL+KSDHps/xUw/J8d5RlVXafTMEyWS0NM6kJa8=; h=From:To:Subject:Date:From; b=uSRhBIecPdIxSVgObMyCgryRtUuZ6cO9YgCUmoRS3CogEnvYxntU1vyg3lJ+0iNTI mJhpgYFaX2lbZmWaZdkyChHl8t7ZONJAN8OFJAeZy4/3K3nhchK6Zpln/1JOrp88jT f4QhpeY9TSTsS7k1CIeyH0Z9mfY4CjoFix+7LO0c= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Jiu Fu Guo To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/guojiufu/heads/guojiufu-branch)] [Ada] Move routine for detecting special Text_IO packages from GNATprove X-Act-Checkin: gcc X-Git-Author: Piotr Trojanek X-Git-Refname: refs/users/guojiufu/heads/guojiufu-branch X-Git-Oldrev: ca124a628569b6f3038223b690d051f9ab5344f1 X-Git-Newrev: d1987ffdc27f0302dba0958083d69b7241194c1c Message-Id: <20200610033842.3F127393C882@sourceware.org> Date: Wed, 10 Jun 2020 03:38:42 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Jun 2020 03:38:42 -0000 https://gcc.gnu.org/g:d1987ffdc27f0302dba0958083d69b7241194c1c commit d1987ffdc27f0302dba0958083d69b7241194c1c Author: Piotr Trojanek Date: Mon Feb 3 17:44:41 2020 +0100 [Ada] Move routine for detecting special Text_IO packages from GNATprove 2020-06-05 Piotr Trojanek gcc/ada/ * rtsfind.ads, rtsfind.adb (Is_Text_IO_Special_Package): Moved from the GNATprove backend to the frontend. Diff: --- gcc/ada/rtsfind.adb | 31 +++++++++++++++++++++++++++++++ gcc/ada/rtsfind.ads | 6 ++++++ 2 files changed, 37 insertions(+) diff --git a/gcc/ada/rtsfind.adb b/gcc/ada/rtsfind.adb index 5983ba95ff2..c43561c884d 100644 --- a/gcc/ada/rtsfind.adb +++ b/gcc/ada/rtsfind.adb @@ -759,6 +759,37 @@ package body Rtsfind is return Present (E) and then E = Ent; end Is_RTU; + -------------------------------- + -- Is_Text_IO_Special_Package -- + -------------------------------- + + function Is_Text_IO_Special_Package (E : Entity_Id) return Boolean is + begin + pragma Assert (Is_Package_Or_Generic_Package (E)); + + -- ??? detection with a scope climbing might be more efficient + + for U in Ada_Text_IO_Child loop + if Is_RTU (E, U) then + return True; + end if; + end loop; + + for U in Ada_Wide_Text_IO_Child loop + if Is_RTU (E, U) then + return True; + end if; + end loop; + + for U in Ada_Wide_Wide_Text_IO_Child loop + if Is_RTU (E, U) then + return True; + end if; + end loop; + + return False; + end Is_Text_IO_Special_Package; + ----------------------------- -- Is_Text_IO_Special_Unit -- ----------------------------- diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads index a86b98ef364..13d22535a3d 100644 --- a/gcc/ada/rtsfind.ads +++ b/gcc/ada/rtsfind.ads @@ -3188,6 +3188,12 @@ package Rtsfind is -- Wide_Wide_Text_IO.xxx, where xxx is one of the subpackages of Text_IO -- that is specially handled as described for Check_Text_IO_Special_Unit. + function Is_Text_IO_Special_Package (E : Entity_Id) return Boolean; + -- Return True iff E is one of the special generic Text_IO packages, which + -- Ada RM defines to be nested in Ada.Text_IO, but GNAT defines as its + -- private children. This is similar to Is_Text_IO_Special_Unit, but is + -- meant to be used on a fully resolved AST, especially in the backends. + function RTE (E : RE_Id) return Entity_Id; -- Given the entity defined in the above tables, as identified by the -- corresponding value in the RE_Id enumeration type, returns the Id of the