On Wed, Oct 26, 2016 at 9:17 PM, Aldy Hernandez <al...@redhat.com> wrote: > The following one-liner segfaults on arm-eabi when compiled with > -mfloat-abi=hard -g: > > __simd64_float16_t usingit; > > The problem is that the pretty printer (in simple_type_specificer()) is > dereferencing a NULL result from c_common_type_for_mode: > > int prec = TYPE_PRECISION (t); > if (ALL_FIXED_POINT_MODE_P (TYPE_MODE (t))) > t = c_common_type_for_mode (TYPE_MODE (t), TYPE_SATURATING (t)); > else > t = c_common_type_for_mode (TYPE_MODE (t), TYPE_UNSIGNED (t)); > if (TYPE_NAME (t)) > > The type in question is: > > <real_type 0x7fffefdeb150 HF ...> > > which corresponds to HFmode and which AFAICT, does not have a type by > design. > > I see that other uses of *type_for_node() throughout the compiler check the > result for NULL, so perhaps we should do the same here. > > The attached patch fixes the problem. > > OK for trunk?
Your added assert shows another possible issue - can you fix this by assigning the result of c_common_type_for_mode to a new variable, like common_t and use that for the TYPE_NAME (...) case? I think this was what was intended. Richard.