aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2017-10-30 22:41:21 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2017-10-30 22:41:21 +0000
commit77efd154f33154e819186de79687ea55552139f4 (patch)
tree131a98d20d1920ad9467d96683d0517a2fefe55d /gcc
parent59d7953a634a71f09d02b37ad3031b17ade60d15 (diff)
downloadgcc-77efd154f33154e819186de79687ea55552139f4.zip
gcc-77efd154f33154e819186de79687ea55552139f4.tar.gz
gcc-77efd154f33154e819186de79687ea55552139f4.tar.bz2
re PR c++/67595 (concepts code causes segfault)
2017-10-30 Paolo Carlini <paolo.carlini@oracle.com> PR c++/67595 * g++.dg/concepts/pr67595.C: New. From-SVN: r254245
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr67595.C13
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e17c94d..33aaba8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-30 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/67595
+ * g++.dg/concepts/pr67595.C: New.
+
2017-10-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80850
diff --git a/gcc/testsuite/g++.dg/concepts/pr67595.C b/gcc/testsuite/g++.dg/concepts/pr67595.C
new file mode 100644
index 0000000..63162fb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/concepts/pr67595.C
@@ -0,0 +1,13 @@
+// { dg-options "-std=c++17 -fconcepts" }
+
+template <class X> concept bool allocatable = requires{{new X}->X * };
+template <class X> concept bool semiregular = allocatable<X>;
+template <class X> concept bool readable = requires{requires semiregular<X>};
+template <class> int weak_input_iterator = requires{{0}->readable};
+template <class X> bool input_iterator{weak_input_iterator<X>};
+template <class X> bool forward_iterator{input_iterator<X>};
+template <class X> bool bidirectional_iterator{forward_iterator<X>};
+template <class X>
+concept bool random_access_iterator{bidirectional_iterator<X>};
+void fn1(random_access_iterator);
+int main() { fn1(0); } // { dg-error "" }