public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Add various testcases
@ 2017-10-10 20:23 Jakub Jelinek
  2017-10-11 20:54 ` [PATCH] Add some further testcases Jakub Jelinek
  0 siblings, 1 reply; 2+ messages in thread
From: Jakub Jelinek @ 2017-10-10 20:23 UTC (permalink / raw)
  To: gcc-patches

Hi!

While going through still open [5 Regression] bugs manually, I've gathered
various testcases from PRs that were fixed by other changes and thus
IMHO the tests are worth being added.  I have some further PRs to go through
tomorrow, so I might add some further ones.

Regtested on x86_64-linux and i686-linux, committed to trunk. 

2017-10-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/68252
	* g++.dg/other/pr68252.C: New test.

	PR middle-end/70100
	* g++.dg/opt/pr70100.C: New test.

	PR c++/77578
	* g++.dg/gomp/pr77578.C: New test.

	PR c++/71875
	* g++.dg/cpp1y/pr71875.C: New test.

	PR c++/77786
	* g++.dg/cpp1y/pr77786.C: New test.

	PR c++/70338
	* g++.dg/cpp0x/pr70338.C: New test.

	PR middle-end/70887
	* g++.dg/cpp0x/pr70887.C: New test.

	PR c++/67625
	* g++.dg/cpp0x/pr67625.C: New test.

	PR rtl-optimization/68205
	* gcc.c-torture/execute/20040709-3.c: New test.

--- gcc/testsuite/g++.dg/other/pr68252.C.jj	2017-10-10 16:14:47.735994894 +0200
+++ gcc/testsuite/g++.dg/other/pr68252.C	2017-10-10 16:14:41.433072970 +0200
@@ -0,0 +1,5 @@
+// PR c++/68252
+
+struct Test {
+  static const int foo = (1 << sizeof (int)) * -3;
+};
--- gcc/testsuite/g++.dg/opt/pr70100.C.jj	2017-10-10 16:37:07.809387447 +0200
+++ gcc/testsuite/g++.dg/opt/pr70100.C	2017-10-10 16:37:03.425441796 +0200
@@ -0,0 +1,21 @@
+// PR middle-end/70100
+// { dg-do compile { target c++11 } }
+// { dg-options "-O0" }
+
+void
+bar (int)
+{
+}
+
+template <typename ... Args>
+void
+foo (Args && ... args)
+{
+  [&] { [&] { bar(args...); }; };
+}
+
+int
+main ()
+{
+  foo (2);
+}
--- gcc/testsuite/g++.dg/gomp/pr77578.C.jj	2017-10-10 17:57:44.029443215 +0200
+++ gcc/testsuite/g++.dg/gomp/pr77578.C	2017-10-10 18:02:03.459239650 +0200
@@ -0,0 +1,31 @@
+// PR c++/77578
+// { dg-do compile }
+
+template <typename T>
+class A 
+{
+};
+
+template <typename T>
+struct B
+{
+};
+
+template <typename T>
+struct B <A <T> >
+{
+  typedef A <T> C;
+  typedef typename C::D D;
+ 
+  template <typename U>
+  static void
+  foo (const D x, const D y)
+  {
+    U u;
+    {
+      #pragma omp parallel for 
+      for (u.bar().y() = x.y(); u.bar().y() <= y.y(); u.bar().y()++) // { dg-error "expected" }
+	;
+    }
+  }
+};
--- gcc/testsuite/g++.dg/cpp1y/pr71875.C.jj	2017-10-10 17:50:04.473120255 +0200
+++ gcc/testsuite/g++.dg/cpp1y/pr71875.C	2017-10-10 17:50:48.204578368 +0200
@@ -0,0 +1,24 @@
+// PR c++/71875
+// { dg-do link { target c++14 } }
+
+template <typename T>
+constexpr bool IsMatrix = false;
+
+template<typename TElem>
+class Matrix {};
+
+template <typename TElem>
+constexpr bool IsMatrix<Matrix<TElem>> = true;
+
+template<typename TNestVec>
+class RowVecExpMatrix;
+
+template <typename TNestVec>
+constexpr bool IsMatrix<RowVecExpMatrix<TNestVec>> = true;
+
+int
+main ()
+{
+  static_assert (IsMatrix<RowVecExpMatrix<Matrix<int>>>, "Matrix check error");
+  static_assert (IsMatrix<Matrix<int>>, "Input type is not a matrix");
+}
--- gcc/testsuite/g++.dg/cpp1y/pr77786.C.jj	2017-10-10 18:06:07.985220123 +0200
+++ gcc/testsuite/g++.dg/cpp1y/pr77786.C	2017-10-10 18:06:26.489991618 +0200
@@ -0,0 +1,21 @@
+// PR c++/77786
+// { dg-do compile { target c++14 } }
+
+#include <vector>
+
+template<int N>
+void
+foo (std::vector<int> a)
+{
+  auto const a_size = a.size();
+  auto bar = [&](auto y) -> void { int a_size_2 = a_size; };
+  double x = 0.0;
+  bar (x);
+}
+
+int
+main ()
+{
+  std::vector<int> a(1);
+  foo<1>(a);
+}
--- gcc/testsuite/g++.dg/cpp0x/pr70338.C.jj	2017-10-10 17:04:04.641335439 +0200
+++ gcc/testsuite/g++.dg/cpp0x/pr70338.C	2017-10-10 17:03:49.000000000 +0200
@@ -0,0 +1,17 @@
+// PR c++/70338
+// { dg-do compile { target c++11 } }
+// { dg-options "-g" }
+
+template<typename T>
+void
+foo (int x)
+{
+  T a[x];
+  auto b = [&]() { for (auto &c: a) c = 0.; };
+}
+
+int
+main ()
+{
+  foo<double> (3);
+}
--- gcc/testsuite/g++.dg/cpp0x/pr70887.C.jj	2017-10-10 17:30:11.667902426 +0200
+++ gcc/testsuite/g++.dg/cpp0x/pr70887.C	2017-10-10 17:30:03.433004543 +0200
@@ -0,0 +1,31 @@
+// PR middle-end/70887
+// { dg-do compile { target { { i?86-*-* x86_64-*-* } && c++11 } } }
+// { dg-options "-O2 -msse2" }
+
+#include <x86intrin.h>
+
+enum R { S };
+template <R> struct C { static constexpr int value = 10; };
+template <typename R, template <R> class T, R... r>
+struct A {
+  template <int, R...> struct B;
+  template <int N, R M, R... O>
+  struct B<N, M, O...> {
+    static constexpr int d = T<M>::value;
+    static __m128i generate()
+    {
+      __attribute__((__vector_size__(16))) long long
+      a = generate(),
+      b = _mm_bslli_si128 (a, 1),
+      c = _mm_bsrli_si128 (_mm_set1_epi32(d), 12);
+      return _mm_or_si128 (b, c);
+    }
+  };
+  A () { B<0, r...>::generate(); }
+};
+
+int
+main () {
+  using RI = A<R, C, S>;
+  RI ri;
+}
--- gcc/testsuite/g++.dg/cpp0x/pr67625.C.jj	2017-10-10 15:55:53.677013155 +0200
+++ gcc/testsuite/g++.dg/cpp0x/pr67625.C	2017-10-10 15:55:27.902331316 +0200
@@ -0,0 +1,12 @@
+// PR c++/67625
+// { dg-do compile { target c++11 } }
+
+constexpr unsigned short
+bswap16 (unsigned short x)
+{
+  return __builtin_bswap16 (x);
+}
+constexpr int a = bswap16 (1);
+enum { b = a };
+enum { c = __builtin_bswap16 (1) };
+enum { d = bswap16 (1) };
--- gcc/testsuite/gcc.c-torture/execute/20040709-3.c.jj	2017-10-10 16:04:28.567657384 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20040709-3.c	2017-10-10 16:05:09.648150289 +0200
@@ -0,0 +1,5 @@
+/* PR rtl-optimization/68205 */
+/* { dg-require-effective-target int32plus } */
+/* { dg-additional-options "-fno-common" } */
+
+#include "20040709-2.c"

	Jakub

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH] Add some further testcases
  2017-10-10 20:23 [PATCH] Add various testcases Jakub Jelinek
@ 2017-10-11 20:54 ` Jakub Jelinek
  0 siblings, 0 replies; 2+ messages in thread
From: Jakub Jelinek @ 2017-10-11 20:54 UTC (permalink / raw)
  To: gcc-patches

On Tue, Oct 10, 2017 at 10:21:22PM +0200, Jakub Jelinek wrote:
> While going through still open [5 Regression] bugs manually, I've gathered
> various testcases from PRs that were fixed by other changes and thus
> IMHO the tests are worth being added.  I have some further PRs to go through
> tomorrow, so I might add some further ones.
> 
> Regtested on x86_64-linux and i686-linux, committed to trunk. 

So, here is the remainder from 5 branch closing, regtested on x86_64-linux
and i686-linux, committed to trunk:

2017-10-11  Jakub Jelinek  <jakub@redhat.com>

	PR c++/80194
	* g++.dg/cpp1y/pr80194.C: New test.

	PR c++/78523
	* g++.dg/cpp1y/pr78523.C: New test.

	PR c++/82414
	* g++.dg/lto/pr82414_0.C: New test.

	PR tree-optimization/78558
	* gcc.dg/vect/pr78558.c: New test.

	PR middle-end/80421
	* gcc.c-torture/execute/pr80421.c: New test.

--- gcc/testsuite/g++.dg/cpp1y/pr80194.C.jj	2017-10-11 11:24:28.294661793 +0200
+++ gcc/testsuite/g++.dg/cpp1y/pr80194.C	2017-10-11 11:24:21.039750326 +0200
@@ -0,0 +1,17 @@
+// PR c++/80194
+// { dg-do compile { target c++14 } }
+
+int fn1 ();
+
+template <class Fn>
+void
+fn2 (Fn &&fn)
+{
+  fn (42);
+}
+
+void fn2 ()
+{
+  auto const x = fn1 ();
+  fn2 ([&](auto) { x; });
+}
--- gcc/testsuite/g++.dg/cpp1y/pr78523.C.jj	2017-10-11 10:51:51.608551082 +0200
+++ gcc/testsuite/g++.dg/cpp1y/pr78523.C	2017-10-11 10:51:43.175654055 +0200
@@ -0,0 +1,12 @@
+// PR c++/78523
+// { dg-do compile { target c++14 } }
+
+int bar ();
+
+void
+foo ()
+{
+  const int t = bar ();
+  auto f = [=] (auto x) { return t; };
+  f (0);
+}
--- gcc/testsuite/g++.dg/lto/pr82414_0.C.jj	2017-10-11 11:56:56.000000000 +0200
+++ gcc/testsuite/g++.dg/lto/pr82414_0.C	2017-10-11 11:59:16.000000000 +0200
@@ -0,0 +1,13 @@
+// PR c++/82414
+// { dg-lto-do link }
+// { dg-lto-options { { -flto -g } } }
+
+typedef __attribute__ ((__aligned__ (16))) struct S { __extension__ unsigned long long Part[2]; } T; // bogus warning "violates one definition rule"
+
+int
+main ()
+{
+  T tf;
+  asm volatile ("" : : "g" (__alignof__(tf)), "g" (__alignof__ (struct S)), "g" (__alignof__ (T)));
+  return 0;
+}
--- gcc/testsuite/gcc.dg/vect/pr78558.c.jj	2017-10-11 11:04:59.940924884 +0200
+++ gcc/testsuite/gcc.dg/vect/pr78558.c	2017-10-11 11:06:20.584940340 +0200
@@ -0,0 +1,44 @@
+/* PR tree-optimization/78558 */
+
+#include "tree-vect.h"
+
+struct S
+{
+  char p[48];
+  unsigned long long q, r, s;
+} s[50];
+
+struct D
+{
+  unsigned long long q, r;
+} d[50];
+
+void
+foo (void)
+{
+  unsigned long i;
+  for (i = 0; i < 50; ++i)
+    {
+      d[i].q = s[i].q;
+      d[i].r = s[i].r;
+    }
+}
+
+int
+main ()
+{
+  check_vect ();
+  unsigned long i;
+  for (i = 0; i < 50; ++i)
+    {
+      s[i].q = i;
+      s[i].r = 50 * i;
+    }
+  asm volatile ("" : : "g" (s), "g" (d) : "memory");
+  foo ();
+  asm volatile ("" : : "g" (s), "g" (d) : "memory");
+  for (i = 0; i < 50; ++i)
+    if (d[i].q != i || d[i].r != 50 * i)
+      abort ();
+  return 0;
+}
--- gcc/testsuite/gcc.c-torture/execute/pr80421.c.jj	2017-10-11 11:36:45.070670843 +0200
+++ gcc/testsuite/gcc.c-torture/execute/pr80421.c	2017-10-11 11:41:29.670198693 +0200
@@ -0,0 +1,121 @@
+/* PR middle-end/80421 */
+
+__attribute__ ((noinline, noclone)) void
+baz (const char *t, ...)
+{
+  asm volatile (""::"r" (t):"memory");
+  if (*t == 'T')
+    __builtin_abort ();
+}
+
+unsigned int
+foo (char x)
+{
+  baz ("x %c\n", x);
+  switch (x)
+    {
+    default:
+      baz ("case default\n");
+      if (x == 'D' || x == 'I')
+	baz ("This should never be reached.\n");
+      return 0;
+    case 'D':
+      baz ("case 'D'\n");
+      return 0;
+    case 'I':
+      baz ("case 'I'\n");
+      return 0;
+    }
+}
+
+void
+bar (void)
+{
+  int a = 2;
+  int b = 5;
+  char c[] = {
+    2, 4, 1, 2, 5, 5, 2, 4, 4, 0, 0, 0, 0, 0, 0, 3, 4, 4, 2, 4,
+    1, 2, 5, 5, 2, 4, 1, 0, 0, 0, 2, 4, 4, 3, 4, 3, 3, 5, 1, 3,
+    5, 5, 2, 4, 4, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 4, 4,
+    2, 4, 2, 3, 5, 1, 3, 5, 1, 3, 5, 5, 2, 4, 1, 2, 4, 2, 3, 5,
+    3, 3, 5, 1, 3, 5, 5, 2, 4, 1, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3,
+    5, 5, 2, 4, 4, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 4, 1,
+    2, 4, 2, 3, 5, 1, 3, 5, 1, 3, 5, 1, 2, 4, 1, 2, 4, 1, 3, 5,
+    1, 3, 5, 1, 3, 5, 1, 2, 4, 4, 2, 4, 1, 3, 5, 1, 3, 5, 1, 3,
+    5, 5, 2, 4, 4, 2, 4, 2, 3, 5, 3, 3, 5, 1, 3, 5, 5, 2, 4, 4,
+    2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 5, 5, 2, 4, 2, 3, 5,
+    1, 3, 4, 1, 3, 5, 1, 2, 5, 5, 2, 4, 1, 2, 5, 1, 3, 5, 3, 3,
+    5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 1,
+    2, 4, 1, 2, 5, 2, 3, 5, 1, 3, 5, 1, 2, 5, 1, 2, 4, 2, 2, 5,
+    1, 3, 5, 1, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3,
+    5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3, 5, 1, 2, 5, 5,
+    2, 4, 2, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5,
+    1, 3, 5, 3, 3, 5, 1, 2, 5, 1, 2, 4, 1, 2, 5, 2, 3, 5, 1, 3,
+    5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3, 5, 1, 2, 5, 5,
+    2, 4, 1, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5,
+    1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 1, 3, 5, 3, 3,
+    5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  };
+  char *f = c + 390;
+  int i, j, e, g, h;
+  char k, l;
+  i = 26;
+  j = 25;
+  k = l = 'M';
+  h = 2;
+  while (i > 0)
+    {
+      int x = i - a;
+      x = x > 0 ? x : 0;
+      x = j - x;
+      g = x * 3 + h;
+      switch (f[g])
+	{
+	case 1:
+	  --i;
+	  --j;
+	  h = 2;
+	  f -= b * 3;
+	  k = 'M';
+	  break;
+	case 2:
+	  --i;
+	  h = 0;
+	  f -= b * 3;
+	  k = 'I';
+	  break;
+	case 3:
+	  --i;
+	  h = 2;
+	  f -= b * 3;
+	  k = 'I';
+	  break;
+	case 4:
+	  --j;
+	  h = 1;
+	  k = 'D';
+	  break;
+	case 5:
+	  --j;
+	  h = 2;
+	  k = 'D';
+	  break;
+	}
+      if (k == l)
+	++e;
+      else
+	{
+	  foo (l);
+	  l = k;
+	}
+    }
+}
+
+int
+main ()
+{
+  char l = 'D';
+  foo (l);
+  bar ();
+  return 0;
+}


	Jakub

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-10-11 20:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-10 20:23 [PATCH] Add various testcases Jakub Jelinek
2017-10-11 20:54 ` [PATCH] Add some further testcases Jakub Jelinek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).