Empty vector constructors are equivalent to zero vectors. If we handle that case directly, we can support it for variable-length vectors and can hopefully make things more efficient for fixed-length vectors.
This is needed by a later C++ patch. Tested on aarch64-linux-gnu and x86_64-linux-gnu. OK to install? Richard 2019-11-16 Richard Sandiford <richard.sandif...@arm.com> gcc/ * tree.c (build_vector_from_ctor): Directly return a zero vector for empty constructors. Index: gcc/tree.c =================================================================== --- gcc/tree.c 2019-11-14 14:55:04.415447600 +0000 +++ gcc/tree.c 2019-11-16 13:53:28.609006588 +0000 @@ -1858,6 +1858,9 @@ make_vector (unsigned log2_npatterns, tree build_vector_from_ctor (tree type, vec<constructor_elt, va_gc> *v) { + if (vec_safe_length (v) == 0) + return build_zero_cst (type); + unsigned HOST_WIDE_INT idx, nelts; tree value;