PR80315 Reported an Internal Compiler Error when the third argument to
__builtin_crypto_vshasigmaw was an integer constant with a value
greater than 15. The patch to correct this problem was committed
yesterday. This patch adds 4 new test cases to the regression suite.
Regression testing has confirmed that these test programs reproduce the
error reported with PR80315 before yesterday's patch was applied, and
that all test programs pass following application of yesterday's patch.
Is this ok for the trunk?
gcc/testsuite/ChangeLog:
2017-04-12 Kelvin Nilsen
* gcc.target/powerpc/pr80315-1.c: New test.
* gcc.target/powerpc/pr80315-2.c: New test.
* gcc.target/powerpc/pr80315-3.c: New test.
* gcc.target/powerpc/pr80315-4.c: New test.
Index: gcc/testsuite/gcc.target/powerpc/pr80315-1.c
===
--- gcc/testsuite/gcc.target/powerpc/pr80315-1.c(revision 0)
+++ gcc/testsuite/gcc.target/powerpc/pr80315-1.c(working copy)
@@ -0,0 +1,16 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } {
"-mcpu=power8" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mcpu=power8" } */
+
+int
+main()
+{
+ __attribute__((altivec(vector__))) unsigned int test, res;
+ const int s0 = 0;
+ int mask;
+
+ /* Argument 2 must be 0 or 1. Argument 3 must be in range 0..15. */
+ res = __builtin_crypto_vshasigmaw (test, 1, 0xff); /* { dg-error "argument 3
must be in the range 0..15" } */
+ return 0;
+}
Index: gcc/testsuite/gcc.target/powerpc/pr80315-2.c
===
--- gcc/testsuite/gcc.target/powerpc/pr80315-2.c(revision 0)
+++ gcc/testsuite/gcc.target/powerpc/pr80315-2.c(working copy)
@@ -0,0 +1,16 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } {
"-mcpu=power8" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mcpu=power8" } */
+
+int
+main ()
+{
+ __attribute__((altivec(vector__))) unsigned long long test, res;
+ const int s0 = 0;
+ int mask;
+
+ /* Argument 2 must be 0 or 1. Argument 3 must be in range 0..15. */
+ res = __builtin_crypto_vshasigmad (test, 1, 0xff); /* { dg-error "argument 3
must be in the range 0..15" } */
+ return 0;
+}
Index: gcc/testsuite/gcc.target/powerpc/pr80315-3.c
===
--- gcc/testsuite/gcc.target/powerpc/pr80315-3.c(revision 0)
+++ gcc/testsuite/gcc.target/powerpc/pr80315-3.c(working copy)
@@ -0,0 +1,18 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } {
"-mcpu=power8" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mcpu=power8" } */
+
+#include
+
+vector unsigned int
+main ()
+{
+ vector unsigned int test, res;
+ const int s0 = 0;
+ int mask;
+
+ /* Argument 2 must be 0 or 1. Argument 3 must be in range 0..15. */
+ res = vec_shasigma_be (test, 1, 0xff); /* { dg-error "argument 3 must be in
the range 0..15" } */
+ return res;
+}
Index: gcc/testsuite/gcc.target/powerpc/pr80315-4.c
===
--- gcc/testsuite/gcc.target/powerpc/pr80315-4.c(revision 0)
+++ gcc/testsuite/gcc.target/powerpc/pr80315-4.c(working copy)
@@ -0,0 +1,18 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } {
"-mcpu=power8" } } */
+/* { dg-require-effective-target powerpc_p8vector_ok } */
+/* { dg-options "-mcpu=power8" } */
+
+#include
+
+vector unsigned long long int
+main ()
+{
+ vector unsigned long long int test, res;
+ const int s0 = 0;
+ int mask;
+
+ /* Argument 2 must be 0 or 1. Argument 3 must be in range 0..15. */
+ res = vec_shasigma_be (test, 1, 0xff); /* { dg-error "argument 3 must be in
the range 0..15" } */
+ return res;
+}