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