Commit edf09592 by Iain Buclaw Committed by Iain Buclaw

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
parent 7610ae80
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
* d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting
uintmax_type_node. Set signed_size_type_node as the signed_type_for
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment