aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2022-10-17 16:28:20 +0200
committerMarc Poulhiès <poulhies@adacore.com>2022-11-07 09:36:34 +0100
commit9b07c1752b9bf49143a41c810e2db86f633fdb1c (patch)
tree1a88ecd0593dcefa518315dbf6960ad2bf01c8b8 /gcc/ada
parent27345558cce16e849884f5d1d4dd7d88974bb724 (diff)
downloadgcc-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.ads2
-rw-r--r--gcc/ada/sem_util.ads3
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;