middle-end/96814 - fix VECTOR_BOOLEAN_TYPE_P CTOR RTL expansion
authorRichard Biener <rguenther@suse.de>
Fri, 25 Sep 2020 09:13:13 +0000 (11:13 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 25 Sep 2020 12:51:26 +0000 (14:51 +0200)
commitd16b5975ca985cbe97698479fc38b6a636886978
tree741667dbea2762008ae58b2061e5e2bb38638aaf
parent7bfc4cd2c812a3197c09797796828459714f8849
middle-end/96814 - fix VECTOR_BOOLEAN_TYPE_P CTOR RTL expansion

The RTL expansion code for CTORs doesn't handle VECTOR_BOOLEAN_TYPE_P
with bit-precision elements correctly as the testcase shows before
the PR97085 fix.  The following makes it do the correct thing
(not 100% sure for CTOR of sub-vectors due to the lack of a testcase).

The alternative would be to assert such CTORs do not happen (and also
add IL verification for this).

The GIMPLE FE needs a way to declare the VECTOR_BOOLEAN_TYPE_P vectors
(thus the C FE needs that).

2020-09-25  Richard Biener  <rguenther@suse.de>

PR middle-end/96814
* expr.c (store_constructor): Handle VECTOR_BOOLEAN_TYPE_P
CTORs correctly.

* gcc.target/i386/pr96814.c: New testcase.
gcc/expr.c
gcc/testsuite/gcc.target/i386/pr96814.c [new file with mode: 0644]