aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2021-05-24 16:14:40 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2021-07-08 13:34:16 +0000
commit79a8b14237eca20a0e8256f5683d6ca092f38a0b (patch)
tree2d878e9e29087c261d2c17b4ac49549c86fac4cc
parent999a2dd00d3cb8127bc1e7a2a5264d2131c92242 (diff)
downloadgcc-79a8b14237eca20a0e8256f5683d6ca092f38a0b.zip
gcc-79a8b14237eca20a0e8256f5683d6ca092f38a0b.tar.gz
gcc-79a8b14237eca20a0e8256f5683d6ca092f38a0b.tar.bz2
[Ada] Avoid linear search when ensuring dependency on System
gcc/ada/ * lib-writ.adb (Ensure_System_Dependency): Replace search in Lib.Units with a search in Lib.Unit_Names.
-rw-r--r--gcc/ada/lib-writ.adb12
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb
index 416052c..1b2912a 100644
--- a/gcc/ada/lib-writ.adb
+++ b/gcc/ada/lib-writ.adb
@@ -137,7 +137,8 @@ package body Lib.Writ is
------------------------------
procedure Ensure_System_Dependency is
- System_Uname : Unit_Name_Type;
+ System_Uname : constant Unit_Name_Type :=
+ Name_To_Unit_Name (Name_System);
-- Unit name for system spec if needed for dummy entry
System_Fname : File_Name_Type;
@@ -146,11 +147,9 @@ package body Lib.Writ is
begin
-- Nothing to do if we already compiled System
- for Unum in Units.First .. Last_Unit loop
- if Source_Index (Unum) = System_Source_File_Index then
- return;
- end if;
- end loop;
+ if Unit_Names.Get (System_Uname) /= No_Unit then
+ return;
+ end if;
-- If no entry for system.ads in the units table, then add a entry
-- to the units table for system.ads, which will be referenced when
@@ -158,7 +157,6 @@ package body Lib.Writ is
-- on system as a result of Targparm scanning the system.ads file to
-- determine the target dependent parameters for the compilation.
- System_Uname := Name_To_Unit_Name (Name_System);
System_Fname := File_Name (System_Source_File_Index);
Units.Increment_Last;