diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2022-10-17 16:28:20 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2022-11-07 09:36:34 +0100 |
commit | 9b07c1752b9bf49143a41c810e2db86f633fdb1c (patch) | |
tree | 1a88ecd0593dcefa518315dbf6960ad2bf01c8b8 /gcc/ada | |
parent | 27345558cce16e849884f5d1d4dd7d88974bb724 (diff) | |
download | gcc-9b07c1752b9bf49143a41c810e2db86f633fdb1c.zip gcc-9b07c1752b9bf49143a41c810e2db86f633fdb1c.tar.gz gcc-9b07c1752b9bf49143a41c810e2db86f633fdb1c.tar.bz2 |
ada: Inline composite node kind AST queries
Queries that ultimately examine the same field of an AST
node (e.g. Nkind) are visibly more efficient when inlined.
In particular, routines Is_Body_Or_Package_Declaration and Is_Body can
apparently be inlined into a single Nkind membership test.
This patch fixes some of the performance lost with the recent changes,
which increased the number of calls to Is_Body_Or_Package_Declaration
(as it is typically used to prevent AST search from climbing too far).
However, it should be generally beneficial to inline routines like this.
gcc/ada/
* sem_aux.ads (Is_Body): Annotate with Inline.
* sem_util.ads (Is_Body_Or_Package_Declaration): Likewise.
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/sem_aux.ads | 2 | ||||
-rw-r--r-- | gcc/ada/sem_util.ads | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/gcc/ada/sem_aux.ads b/gcc/ada/sem_aux.ads index 66cbcfb..004aadb 100644 --- a/gcc/ada/sem_aux.ads +++ b/gcc/ada/sem_aux.ads @@ -279,7 +279,7 @@ package Sem_Aux is -- or subtype. This is true if Suppress_Initialization is set either for -- the subtype itself, or for the corresponding base type. - function Is_Body (N : Node_Id) return Boolean; + function Is_Body (N : Node_Id) return Boolean with Inline; -- Determine whether an arbitrary node denotes a body function Is_By_Copy_Type (Ent : Entity_Id) return Boolean; diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads index 5c08cb8..2126bed 100644 --- a/gcc/ada/sem_util.ads +++ b/gcc/ada/sem_util.ads @@ -1881,7 +1881,8 @@ package Sem_Util is function Is_Attribute_Update (N : Node_Id) return Boolean; -- Determine whether node N denotes attribute 'Update - function Is_Body_Or_Package_Declaration (N : Node_Id) return Boolean; + function Is_Body_Or_Package_Declaration (N : Node_Id) return Boolean + with Inline; -- Determine whether node N denotes a body or a package declaration function Is_Bounded_String (T : Entity_Id) return Boolean; |