summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-09 14:32:25 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2017-09-09 14:32:25 +0000
commitc0cd88329699c2e51be348670462de0070bb080e (patch)
treebce5f25cfe28ea2d0cbb5aeaecdc66cbd8e6ddf1
parentb5c2a091af6c298a175689922c713ff1b4e7c5ec (diff)
downloadgcc-c0cd88329699c2e51be348670462de0070bb080e.tar.gz
PR c++/81852 define feature-test macro for -fthreadsafe-statics
gcc/c-family: PR c++/81852 * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_threadsafe_static_init. gcc/testsuite: PR c++/81852 * g++.dg/cpp1y/feat-cxx11.C: Check __cpp_threadsafe_static_init. * g++.dg/cpp1y/feat-cxx14.C: Likewise. * g++.dg/cpp1y/feat-cxx98.C: Likewise. * g++.dg/cpp1y/feat-neg.C: Likewise. * g++.dg/cpp1z/feat-cxx1z.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251939 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-cppbuiltin.c2
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/feat-neg.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C6
8 files changed, 49 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 9886dcd86b2..3d959492d11 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2017-09-09 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/81852
+ * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_threadsafe_static_init.
+
2017-09-04 Marek Polacek <polacek@redhat.com>
PR c/81783
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
index 8f377f698a6..4330c9102d9 100644
--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -987,6 +987,8 @@ c_cpp_builtins (cpp_reader *pfile)
}
if (flag_new_ttp)
cpp_define (pfile, "__cpp_template_template_args=201611");
+ if (flag_threadsafe_statics)
+ cpp_define (pfile, "__cpp_threadsafe_static_init=200806");
}
/* Note that we define this for C as well, so that we know if
__attribute__((cleanup)) will interface with EH. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 35aadc7952d..fdd128c58cf 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2017-09-09 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/81852
+ * g++.dg/cpp1y/feat-cxx11.C: Check __cpp_threadsafe_static_init.
+ * g++.dg/cpp1y/feat-cxx14.C: Likewise.
+ * g++.dg/cpp1y/feat-cxx98.C: Likewise.
+ * g++.dg/cpp1y/feat-neg.C: Likewise.
+ * g++.dg/cpp1z/feat-cxx1z.C: Likewise.
+
2017-09-09 Pierre-Marie de Rodat <derodat@adacore.com>
* gnat.dg/debug14.adb: New test.
diff --git a/gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C b/gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
index 98112218d8f..b18fcfabad4 100644
--- a/gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
+++ b/gcc/testsuite/g++.dg/cpp1y/feat-cxx11.C
@@ -125,6 +125,12 @@
# error "__cpp_alias_templates != 200704"
#endif
+#ifndef __cpp_threadsafe_static_init
+# error "__cpp_threadsafe_static_init"
+#elif __cpp_threadsafe_static_init != 200806
+# error "__cpp_threadsafe_static_init != 200806"
+#endif
+
// C++14 features allowed in C++11 in non-ANSI modes:
#ifndef __cpp_binary_literals
diff --git a/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C b/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
index 3b141ef67c4..412b9a33b8f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
+++ b/gcc/testsuite/g++.dg/cpp1y/feat-cxx14.C
@@ -118,6 +118,12 @@
# error "__cpp_alias_templates != 200704"
#endif
+#ifndef __cpp_threadsafe_static_init
+# error "__cpp_threadsafe_static_init"
+#elif __cpp_threadsafe_static_init != 200806
+# error "__cpp_threadsafe_static_init != 200806"
+#endif
+
// C++14 features:
#ifndef __cpp_binary_literals
diff --git a/gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C b/gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C
index d15e7aadcee..4db499cc2f4 100644
--- a/gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C
+++ b/gcc/testsuite/g++.dg/cpp1y/feat-cxx98.C
@@ -15,6 +15,14 @@
# error "__cpp_exceptions != 199711"
#endif
+// C++11 features allowed in C++98:
+
+#ifndef __cpp_threadsafe_static_init
+# error "__cpp_threadsafe_static_init"
+#elif __cpp_threadsafe_static_init != 200806
+# error "__cpp_threadsafe_static_init != 200806"
+#endif
+
// C++14 features allowed in C++98 in non-ANSI modes:
#ifndef __cpp_binary_literals
diff --git a/gcc/testsuite/g++.dg/cpp1y/feat-neg.C b/gcc/testsuite/g++.dg/cpp1y/feat-neg.C
index 9f4a0412403..5e95418dfe4 100644
--- a/gcc/testsuite/g++.dg/cpp1y/feat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp1y/feat-neg.C
@@ -1,5 +1,5 @@
// { dg-do compile }
-// { dg-options "-fno-rtti -fno-exceptions" }
+// { dg-options "-fno-rtti -fno-exceptions -fno-threadsafe-statics" }
// C++98 features with explicit opt-out:
@@ -10,3 +10,9 @@
#ifndef __cpp_exceptions
# error "__cpp_exceptions" // { dg-error "error" }
#endif
+
+// C++11 features with explicit opt-out:
+
+#ifndef __cpp_threadsafe_static_init
+# error "__cpp_threadsafe_static_init" // { dg-error "error" }
+#endif
diff --git a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
index e424e1c0ff0..a7c6cfe5169 100644
--- a/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
+++ b/gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
@@ -106,6 +106,12 @@
# error "__cpp_alias_templates != 200704"
#endif
+#ifndef __cpp_threadsafe_static_init
+# error "__cpp_threadsafe_static_init"
+#elif __cpp_threadsafe_static_init != 200806
+# error "__cpp_threadsafe_static_init != 200806"
+#endif
+
// C++14 features:
#ifndef __cpp_binary_literals