http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55726
Bug #: 55726 Summary: assignment of a scalar to a vector Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: vincenzo.innoce...@cern.ch CC: marc.gli...@ens.fr given that the following code is valid and correct typedef float __attribute__( ( vector_size( 16 ) ) ) float32x4_t; typedef int __attribute__( ( vector_size( 16 ) ) ) int32x4_t; #include<cassert> int main() { float a = 3.14f; float32x4_t va = float32x4_t{} + a; // float32x4_t va = a; int32x4_t t = va==a; for (int i=0; i!=4;++i) { assert(va[i]==a); assert(t[i]!=0); } return 0; } I think that the assignment float32x4_t va = a; is syntactically and semantically unambiguous and therefore should be supported. At the moment produces ++ -std=c++11 -Ofast -march=corei7 assign.cpp assign.cpp: In function ‘int main()’: assign.cpp:9:21: error: cannot convert ‘float’ to ‘float32x4_t {aka __vector(4) float}’ in initialization float32x4_t va = a;