https://gcc.gnu.org/g:372c2b540f699a8aa5016c03f3ebd531b2d9991e
commit r16-2015-g372c2b540f699a8aa5016c03f3ebd531b2d9991e Author: Eric Botcazou <ebotca...@adacore.com> Date: Fri Jun 20 18:12:57 2025 +0200 ada: Disable previous change for enumeration types The debugger cannot correctly interpret the return value in this case. gcc/ada/ChangeLog: * gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Only apply the transformation to integer types. Diff: --- gcc/ada/gcc-interface/decl.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index 6ea09ea5c365..86cbf5ba4fb5 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -6422,7 +6422,7 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition, else if (Convention (gnat_subprog) != Convention_Stubbed) { /* If we have two entries that may be returned in integer registers, - the larger has power-of-2 size and the smaller is integral, then + the larger has power-of-2 size and the smaller is integer, then extend the smaller to this power-of-2 size to get a return type with power-of-2 size and no holes, again to speed up accesses. */ if (list_length (gnu_cico_field_list) == 2 @@ -6430,7 +6430,7 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition, { tree typ1 = TREE_TYPE (gnu_cico_field_list); tree typ2 = TREE_TYPE (DECL_CHAIN (gnu_cico_field_list)); - if (INTEGRAL_TYPE_P (typ1) + if (TREE_CODE (typ1) == INTEGER_TYPE && integer_pow2p (TYPE_SIZE (typ2)) && compare_tree_int (TYPE_SIZE (typ2), MAX_FIXED_MODE_SIZE) <= 0 @@ -6438,7 +6438,7 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition, TREE_TYPE (gnu_cico_field_list) = gnat_type_for_size (TREE_INT_CST_LOW (TYPE_SIZE (typ2)), TYPE_UNSIGNED (typ1)); - else if (INTEGRAL_TYPE_P (typ2) + else if (TREE_CODE (typ2) == INTEGER_TYPE && integer_pow2p (TYPE_SIZE (typ1)) && compare_tree_int (TYPE_SIZE (typ1), MAX_FIXED_MODE_SIZE) <= 0