aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-11-18 15:29:53 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-11-18 15:29:53 +0000
commit78930e4b4867c0558cf347778591a67a0b235ca0 (patch)
tree06c6bc2d446aa1379fcca92decf227ccf6da7351 /gcc/tree.c
parentcb77875a86c67f606ff59261348e1d81b945aa44 (diff)
downloadgcc-78930e4b4867c0558cf347778591a67a0b235ca0.zip
gcc-78930e4b4867c0558cf347778591a67a0b235ca0.tar.gz
gcc-78930e4b4867c0558cf347778591a67a0b235ca0.tar.bz2
Add an empty constructor shortcut to build_vector_from_ctor
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. 2019-11-18 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree.c (build_vector_from_ctor): Directly return a zero vector for empty constructors. From-SVN: r278413
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 4db3fa8..f9ea79d 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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;