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
This commit is contained in:
parent
7610ae806e
commit
edf095929f
@ -1,3 +1,9 @@
|
||||
2019-08-20 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||
|
||||
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 <ibuclaw@gdcproject.org>
|
||||
|
||||
PR d/90445
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user