diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2021-10-08 14:45:51 +0200 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-10-25 15:07:20 +0000 |
commit | 9e67eed1efd54d17e863159086048be673e9587e (patch) | |
tree | f2f38f828af9627ad585e9cbcc949c9470810d59 | |
parent | 6888031123ed16ccf01dd803207362b4500db624 (diff) | |
download | gcc-9e67eed1efd54d17e863159086048be673e9587e.zip gcc-9e67eed1efd54d17e863159086048be673e9587e.tar.gz gcc-9e67eed1efd54d17e863159086048be673e9587e.tar.bz2 |
[Ada] Simplify detection of a parent interface equality
gcc/ada/
* exp_ch3.adb (Predefined_Primitive_Bodies): Simplify detection
of existing equality operator.
-rw-r--r-- | gcc/ada/exp_ch3.adb | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb index e8d4326..00a6b6c 100644 --- a/gcc/ada/exp_ch3.adb +++ b/gcc/ada/exp_ch3.adb @@ -10972,16 +10972,13 @@ package body Exp_Ch3 is while Present (Prim) loop if Chars (Node (Prim)) = Name_Op_Eq and then not Is_Internal (Node (Prim)) - and then Present (First_Entity (Node (Prim))) -- The predefined equality primitive must have exactly two - -- formals whose type is this tagged type + -- formals whose type is this tagged type. - and then Present (Last_Entity (Node (Prim))) - and then Next_Entity (First_Entity (Node (Prim))) - = Last_Entity (Node (Prim)) - and then Etype (First_Entity (Node (Prim))) = Tag_Typ - and then Etype (Last_Entity (Node (Prim))) = Tag_Typ + and then Number_Formals (Node (Prim)) = 2 + and then Etype (First_Formal (Node (Prim))) = Tag_Typ + and then Etype (Last_Formal (Node (Prim))) = Tag_Typ then Eq_Needed := False; Eq_Name := No_Name; |