From: Javier Miranda <[email protected]>
The frontend reports a spurious warning when the type of some
component of an untagged record type is a private record type
that has an user-defined equality operator and the sources
are compiled enabling warnings for ignored equality operators
(that is, switch -gnatdw_q).
The warning is spurious because it must not be reported when
the full type declaration of the private type is a record type.
gcc/ada/ChangeLog:
* exp_ch3.adb (Build_Untagged_Record_Equality): Add missing
support for incomplete and private types.
Tested on x86_64-pc-linux-gnu (before the recent bootstrap breakage), committed
on master.
---
gcc/ada/exp_ch3.adb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index 57d2ec39974..1b53199cb4e 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -5180,7 +5180,7 @@ package body Exp_Ch3 is
while Present (Comp) loop
if Present (User_Defined_Eq (Etype (Comp)))
- and then not Is_Record_Type (Etype (Comp))
+ and then not Is_Record_Type (Underlying_Type (Etype (Comp)))
and then not Is_Intrinsic_Subprogram
(User_Defined_Eq (Etype (Comp)))
then
--
2.51.0