From: Piotr Trojanek Date: Fri, 12 Aug 2022 10:04:35 +0000 (+0200) Subject: ada: Clean up unnecesary call in resolution of overloaded expressions X-Git-Tag: basepoints/gcc-14~3479 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f073f3355643587073ce224563f509332043c381;p=thirdparty%2Fgcc.git ada: Clean up unnecesary call in resolution of overloaded expressions When experimentally enabling frontend inlining by default, the unnecessary call to Comes_From_Predefined_Lib_Unit in Resolve appears to be a performance bottleneck (most likely this call is expensive because it involves a loop over the currently inlined subprograms). Code cleanup; semantics is unaffected. gcc/ada/ * sem_res.adb (Resolve): Only call Comes_From_Predefined_Lib_Unit when its result might be needed. --- diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 76750708bcad..ea9a03b58e6c 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -2370,8 +2370,6 @@ package body Sem_Res is ("prefix must statically denote a non-remote subprogram", N); end if; - From_Lib := Comes_From_Predefined_Lib_Unit (N); - -- If the context is a Remote_Access_To_Subprogram, access attributes -- must be resolved with the corresponding fat pointer. There is no need -- to check for the attribute name since the return type of an @@ -2505,6 +2503,8 @@ package body Sem_Res is -- is compatible with the context (i.e. the type passed to Resolve) else + From_Lib := Comes_From_Predefined_Lib_Unit (N); + -- Loop through possible interpretations Get_First_Interp (N, I, It);