Commit a1b68059 by Richard Sandiford Committed by Richard Sandiford

[D] Remove unchecked to_constant in VECTOR_TYPE handling

The SVE port now tries to register variable-length VECTOR_TYPEs
at start-up, so it's no longer possible to use the asserting
to_constant on the number of vector elements.  This patch punts
on variable element counts instead, just like we do for other
things that the frontend doesn't recognise.

The brace indentation matches the surrounding style.

2019-11-04  Richard Sandiford  <richard.sandiford@arm.com>

gcc/d/
	* d-builtins.cc (build_frontend_type): Cope with variable
	TYPE_VECTOR_SUBPARTS.

From-SVN: r277793
parent 63b7a614
2019-11-04 Richard Sandiford <richard.sandiford@arm.com>
* d-builtins.cc (build_frontend_type): Cope with variable
TYPE_VECTOR_SUBPARTS.
2019-08-23 Jakub Jelinek <jakub@redhat.com>
PR middle-end/91283
......
......@@ -197,20 +197,23 @@ build_frontend_type (tree type)
break;
case VECTOR_TYPE:
{
unsigned HOST_WIDE_INT nunits;
if (!TYPE_VECTOR_SUBPARTS (type).is_constant (&nunits))
break;
dtype = build_frontend_type (TREE_TYPE (type));
if (dtype)
{
poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (type);
dtype = dtype->sarrayOf (nunits.to_constant ())->addMod (mod);
if (!dtype)
break;
if (dtype->nextOf ()->isTypeBasic () == NULL)
break;
dtype = dtype->sarrayOf (nunits)->addMod (mod);
if (dtype->nextOf ()->isTypeBasic () == NULL)
break;
dtype = (TypeVector::create (Loc (), dtype))->addMod (mod);
builtin_converted_decls.safe_push (builtin_data (dtype, type));
return dtype;
}
break;
dtype = (TypeVector::create (Loc (), dtype))->addMod (mod);
builtin_converted_decls.safe_push (builtin_data (dtype, type));
return dtype;
}
case RECORD_TYPE:
{
......
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