diff mbox series

[Ada] Avoid linear search when ensuring dependency on System

Message ID 20210708134953.GA2465467@adacore.com
State New
Headers show
Series [Ada] Avoid linear search when ensuring dependency on System | expand

Commit Message

Pierre-Marie de Rodat July 8, 2021, 1:49 p.m. UTC
Replace a linear search with a hash table query.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

	* lib-writ.adb (Ensure_System_Dependency): Replace search in
	Lib.Units with a search in Lib.Unit_Names.
diff mbox series

Patch

diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb
--- 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;