]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Add missing guards to previous change
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 18 Jun 2025 07:52:44 +0000 (09:52 +0200)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 4 Jul 2025 07:41:47 +0000 (09:41 +0200)
We need to make sure that an integer type exists for the given size.

gcc/ada/ChangeLog:

* gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Add guards.

gcc/ada/gcc-interface/decl.cc

index 63c6851d1429464c519a222863157ea84fcd0743..6ea09ea5c365d9f8f8a0d5a60aad591c4a179acd 100644 (file)
@@ -6432,12 +6432,16 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition,
              tree typ2 = TREE_TYPE (DECL_CHAIN (gnu_cico_field_list));
              if (INTEGRAL_TYPE_P (typ1)
                  && integer_pow2p (TYPE_SIZE (typ2))
+                 && compare_tree_int (TYPE_SIZE (typ2),
+                                      MAX_FIXED_MODE_SIZE) <= 0
                  && tree_int_cst_lt (TYPE_SIZE (typ1), TYPE_SIZE (typ2)))
                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)
                       && integer_pow2p (TYPE_SIZE (typ1))
+                      && compare_tree_int (TYPE_SIZE (typ1),
+                                           MAX_FIXED_MODE_SIZE) <= 0
                       && tree_int_cst_lt (TYPE_SIZE (typ2), TYPE_SIZE (typ1)))
                TREE_TYPE (DECL_CHAIN (gnu_cico_field_list))
                  = gnat_type_for_size (TREE_INT_CST_LOW (TYPE_SIZE (typ1)),