From: Iain Buclaw Date: Wed, 21 Aug 2019 07:53:25 +0000 (+0000) Subject: d: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=edf095929fdec6a0c183ab5fd119f26dfd406b13;p=gcc.git d: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539 gcc/d/ChangeLog: PR d/90446 * d-lang.cc (d_type_for_mode): Check for all internal __intN types. (d_type_for_size): Likewise. From-SVN: r274767 --- diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 6b692f5cf35..41ea48e8b15 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,9 @@ +2019-08-20 Iain Buclaw + + PR d/90446 + * d-lang.cc (d_type_for_mode): Check for all internal __intN types. + (d_type_for_size): Likewise. + 2019-08-20 Iain Buclaw PR d/90445 diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc index f23f719a2c3..db0db0e71dc 100644 --- a/gcc/d/d-lang.cc +++ b/gcc/d/d-lang.cc @@ -1360,6 +1360,17 @@ d_type_for_mode (machine_mode mode, int unsignedp) if (mode == TYPE_MODE (build_pointer_type (d_int_type))) return build_pointer_type (d_int_type); + for (int i = 0; i < NUM_INT_N_ENTS; i ++) + { + if (int_n_enabled_p[i] && mode == int_n_data[i].m) + { + if (unsignedp) + return int_n_trees[i].unsigned_type; + else + return int_n_trees[i].signed_type; + } + } + if (COMPLEX_MODE_P (mode)) { machine_mode inner_mode; @@ -1408,6 +1419,17 @@ d_type_for_size (unsigned bits, int unsignedp) if (bits <= TYPE_PRECISION (d_cent_type)) return unsignedp ? d_ucent_type : d_cent_type; + for (int i = 0; i < NUM_INT_N_ENTS; i ++) + { + if (int_n_enabled_p[i] && bits == int_n_data[i].bitsize) + { + if (unsignedp) + return int_n_trees[i].unsigned_type; + else + return int_n_trees[i].signed_type; + } + } + return 0; }