From: Eric Botcazou <ebotca...@adacore.com> 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. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/gcc-interface/decl.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index 63c6851d142..6ea09ea5c36 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -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)), -- 2.43.0