aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2021-10-08 14:45:51 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2021-10-25 15:07:20 +0000
commit9e67eed1efd54d17e863159086048be673e9587e (patch)
treef2f38f828af9627ad585e9cbcc949c9470810d59
parent6888031123ed16ccf01dd803207362b4500db624 (diff)
downloadgcc-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.adb11
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;