https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104258
Bug ID: 104258 Summary: [11/12 regression] Generic formal ">" used incorrectly Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada Assignee: unassigned at gcc dot gnu.org Reporter: simon at pushface dot org Target Milestone: --- Host: x86_64-apple-darwin15 Target: x86_64-apple-darwin15 Build: x86_64-apple-darwin15 Created attachment 52301 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52301&action=edit Reproducer I have a generic with a formal private type Element_Type and a formal function ">" (L, R : Element_Type) return Boolean. This gives me puzzling and compiler-dependent behaviour when I instantiate with Element_Type => Integer and ">" => "<" (or, as in the code below, ">" => Less_Than, where Less_Than outputs a message if it's called). The output from the code attached is GCC 10.1.0: Data'Length: 2 Data'Length > 1: TRUE Integer'(Data'Length) > 1: TRUE Standard.">" (Data'Length, 1): TRUE Standard.">" (Integer'(Data'Length), 1): TRUE GCC 11.2.0, 12.0.0 of 2022-01-11: Data'Length: 2 Data'Length > 1: **less_than ( 2, 1) returns FALSE** FALSE Integer'(Data'Length) > 1: TRUE Standard.">" (Data'Length, 1): **less_than ( 2, 1) returns FALSE** FALSE Standard.">" (Integer'(Data'Length), 1): TRUE