From: Steve Baird <[email protected]>
In some cases involving an illegal reference to F'Result in
the postcondition for a function not named F, the compiler would
hang instead of correctly diagnosing the error.
gcc/ada/
* sem_attr.adb (Denote_Same_Function): Handle the case where
Has_Homonym (Pref_Id) returns True but Homonym (Pref_Id) returns
an empty result.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/sem_attr.adb | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index e00addd0152..d03761b1e30 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -5921,7 +5921,9 @@ package body Sem_Attr is
-- When a qualified name is used for the prefix, homonyms may come
-- before the current function in the homonym chain.
- elsif Has_Homonym (Pref_Id) then
+ elsif Has_Homonym (Pref_Id)
+ and then Present (Homonym (Pref_Id))
+ then
return Denote_Same_Function (Homonym (Pref_Id), Spec_Id);
end if;
--
2.40.0