diff options
author | Sebastian Poeplau <poeplau@adacore.com> | 2023-11-07 13:28:25 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-11-28 10:35:47 +0100 |
commit | d2f2b9e6f9bcc2398f7e9a5a42dfa55053bdb0bf (patch) | |
tree | e067076967a117d163fd494d02aacdc4a49e12b4 /gcc/ada/einfo-utils.adb | |
parent | 8ba9430bc41fcf60de936746ebfa27928bcdabc3 (diff) | |
download | gcc-d2f2b9e6f9bcc2398f7e9a5a42dfa55053bdb0bf.zip gcc-d2f2b9e6f9bcc2398f7e9a5a42dfa55053bdb0bf.tar.gz gcc-d2f2b9e6f9bcc2398f7e9a5a42dfa55053bdb0bf.tar.bz2 |
ada: Add new predicate Is_Address_Compatible_Type
When emitting code for architectures with tagged pointers, it is useful
to be able to recognize values representing addresses because they
require special handling. This commits adds the predicate
Is_Address_Compatible_Type, which differs from the node attribute
Is_Descendant_Of_Address by also taking Standard_Address into account.
gcc/ada/
* einfo-utils.ads, einfo-utils.adb (Is_Address_Compatible_Type):
New function.
Diffstat (limited to 'gcc/ada/einfo-utils.adb')
-rw-r--r-- | gcc/ada/einfo-utils.adb | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/ada/einfo-utils.adb b/gcc/ada/einfo-utils.adb index 88f4d4b..46177ac 100644 --- a/gcc/ada/einfo-utils.adb +++ b/gcc/ada/einfo-utils.adb @@ -201,6 +201,11 @@ package body Einfo.Utils is and then Ekind (Directly_Designated_Type (Id)) = E_Subprogram_Type; end Is_Access_Subprogram_Type; + function Is_Address_Compatible_Type (Id : E) return B is + begin + return Is_Descendant_Of_Address (Id) or else Id = Standard_Address; + end Is_Address_Compatible_Type; + function Is_Aggregate_Type (Id : E) return B is begin return Ekind (Id) in Aggregate_Kind; |