aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/rtsfind.adb
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2020-02-03 17:44:41 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2020-06-05 08:17:45 -0400
commitd1987ffdc27f0302dba0958083d69b7241194c1c (patch)
treeb0face5cbd3eec10dcc4257726e20ce8c14b66e7 /gcc/ada/rtsfind.adb
parentca124a628569b6f3038223b690d051f9ab5344f1 (diff)
downloadgcc-d1987ffdc27f0302dba0958083d69b7241194c1c.zip
gcc-d1987ffdc27f0302dba0958083d69b7241194c1c.tar.gz
gcc-d1987ffdc27f0302dba0958083d69b7241194c1c.tar.bz2
[Ada] Move routine for detecting special Text_IO packages from GNATprove
2020-06-05 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * rtsfind.ads, rtsfind.adb (Is_Text_IO_Special_Package): Moved from the GNATprove backend to the frontend.
Diffstat (limited to 'gcc/ada/rtsfind.adb')
-rw-r--r--gcc/ada/rtsfind.adb31
1 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ada/rtsfind.adb b/gcc/ada/rtsfind.adb
index 5983ba9..c43561c 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 --
-----------------------------