diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2020-02-03 17:44:41 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-06-05 08:17:45 -0400 |
commit | d1987ffdc27f0302dba0958083d69b7241194c1c (patch) | |
tree | b0face5cbd3eec10dcc4257726e20ce8c14b66e7 /gcc/ada/rtsfind.adb | |
parent | ca124a628569b6f3038223b690d051f9ab5344f1 (diff) | |
download | gcc-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.adb | 31 |
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 -- ----------------------------- |