Skip to content
Snippets Groups Projects
Commit 329bef49 authored by Iain Buclaw's avatar Iain Buclaw
Browse files

d: Fix error: aggregate value used where floating point was expected

Casting from vector to static array is permitted, and the frontend
generates a reinterpret cast, but casting back the other way resulted in
an error.  This has been fixed to be properly handled in the code
generation pass of VectorExp, and the conversion for lvalue and rvalue
handling done in convert_expr and convert_for_rvalue respectively.

	PR d/106139

gcc/d/ChangeLog:

	* d-convert.cc (convert_expr): Handle casting from array to vector.
	(convert_for_rvalue): Rewrite vector to array casts of the same
	element type into a constructor.
	(convert_for_assignment): Return calling convert_for_rvalue.
	* expr.cc (ExprVisitor::visit (VectorExp *)): Handle generating a
	vector expression from a static array.
	* toir.cc (IRVisitor::visit (ReturnStatement *)): Call
	convert_for_rvalue on return value.

gcc/testsuite/ChangeLog:

	* gdc.dg/pr106139a.d: New test.
	* gdc.dg/pr106139b.d: New test.
	* gdc.dg/pr106139c.d: New test.
	* gdc.dg/pr106139d.d: New test.
parent 49d50806
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment