]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Disable previous change for enumeration types
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 20 Jun 2025 16:12:57 +0000 (18:12 +0200)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 4 Jul 2025 07:41:47 +0000 (09:41 +0200)
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.

gcc/ada/gcc-interface/decl.cc

index 6ea09ea5c365d9f8f8a0d5a60aad591c4a179acd..86cbf5ba4fb577c608d731e7efac3649c240cc04 100644 (file)
@@ -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