diff options
author | Andreas Krebbel <krebbel@linux.vnet.ibm.com> | 2017-03-24 13:51:32 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2017-03-24 13:51:32 +0000 |
commit | dc4f29bc9a9dfcc68b20c0ce767cc3d6fb7409d4 (patch) | |
tree | a8f580507132e9c6e96b398f2eb9e19b19cb2378 | |
parent | 56010684160c394a1824909e2ac450a6da41db40 (diff) | |
download | gcc-dc4f29bc9a9dfcc68b20c0ce767cc3d6fb7409d4.zip gcc-dc4f29bc9a9dfcc68b20c0ce767cc3d6fb7409d4.tar.gz gcc-dc4f29bc9a9dfcc68b20c0ce767cc3d6fb7409d4.tar.bz2 |
S/390: PR79893: Add diagnostics vec_load_bndry builtin.
The boundary argument of the vec_load_bndry builtin needs to be
rewritten. At that point it must be constant already. The current
diagnostics in s390_expand_builtins is too late for this. The patch
adds an additional check for that builtin which will be triggered
already during preprocessing.
Regression tested on s390x.
gcc/testsuite/ChangeLog:
2017-03-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR target/79893
* gcc.target/s390/zvector/pr79893.c: New test.
gcc/ChangeLog:
2017-03-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR target/79893
* config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
error if the boundary argument is not constant.
From-SVN: r246442
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/s390/s390-c.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/s390/zvector/pr79893.c | 9 |
4 files changed, 30 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12525c6..e3fcfbe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-03-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + PR target/79893 + * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an + error if the boundary argument is not constant. + 2017-03-24 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/80112 diff --git a/gcc/config/s390/s390-c.c b/gcc/config/s390/s390-c.c index 8cdac7e..0521e1e 100644 --- a/gcc/config/s390/s390-c.c +++ b/gcc/config/s390/s390-c.c @@ -673,10 +673,18 @@ s390_adjust_builtin_arglist (unsigned int ob_fcode, tree decl, case S390_OVERLOADED_BUILTIN_s390_vec_load_bndry: { int code; - if (dest_arg_index == 1) { - switch (tree_to_uhwi ((**arglist)[src_arg_index])) + tree arg = (**arglist)[src_arg_index]; + + if (TREE_CODE (arg) != INTEGER_CST) + { + error ("constant value required for builtin %qF argument %d", + decl, src_arg_index + 1); + return; + } + + switch (tree_to_uhwi (arg)) { case 64: code = 0; break; case 128: code = 1; break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a53ffef..96eedbd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + PR target/79893 + * gcc.target/s390/zvector/pr79893.c: New test. + 2017-03-24 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/80112 diff --git a/gcc/testsuite/gcc.target/s390/zvector/pr79893.c b/gcc/testsuite/gcc.target/s390/zvector/pr79893.c new file mode 100644 index 0000000..ad6ca30 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/zvector/pr79893.c @@ -0,0 +1,9 @@ +/* { dg-do compile { target { s390*-*-* } } } */ +/* { dg-options "-march=z13 -mzarch -mzvector" } */ + +#include <vecintrin.h> + +void +foo(signed char *p, int i) { + vec_load_bndry(p, i); /* { dg-error "constant value required for builtin.*2" } */ +} |