re PR c++/56481 (endless loop compiling a C++ file)
authorJason Merrill <jason@redhat.com>
Thu, 28 Feb 2013 20:36:47 +0000 (15:36 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 28 Feb 2013 20:36:47 +0000 (15:36 -0500)
PR c++/56481
* g++.dg/cpp0x/constexpr-and.C: New.

From-SVN: r196359

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/constexpr-and.C [new file with mode: 0644]

index 08399b9651cb178a2ebadcc08da53eff3ecde001..7c6afc2239ba5a879f9dd8385358bcd9c3d92f87 100644 (file)
@@ -1,3 +1,8 @@
+2013-02-28  Jason Merrill  <jason@redhat.com>
+
+       PR c++/56481
+       * g++.dg/cpp0x/constexpr-and.C: New.
+
 2013-02-28  Martin Jambor  <mjambor@suse.cz>
 
        PR tree-optimization/56294
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-and.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-and.C
new file mode 100644 (file)
index 0000000..15ad252
--- /dev/null
@@ -0,0 +1,20 @@
+// PR c++/56481
+// Non-linearity in potential_constant_expression_1
+// { dg-options -std=c++11 }
+
+struct S
+{
+  constexpr bool foo ();
+#define A(n) , f##n##0, f##n##1, f##n##2, f##n##3
+#define B(n) A(n##0) A(n##1) A(n##2) A(n##3)
+#define C B(0) B(1) B(2) B(3)
+  bool f C;
+};
+
+constexpr bool
+S::foo ()
+{
+#undef A
+#define A(n) && f##n##0 && f##n##1 && f##n##2 && f##n##3
+  return f C;
+}