+2017-09-11 Jonathan Wakely <jwakely@redhat.com>
+
+ PR c++/81852
+ * c-cppbuiltin.c (c_cpp_builtins): Define __cpp_threadsafe_static_init.
+
2017-05-30 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
}
if (flag_sized_deallocation)
cpp_define (pfile, "__cpp_sized_deallocation=201309");
+ 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. */
+2017-09-11 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.
+
2017-09-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
Backport from mainline:
# 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
# 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
# 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
// { 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:
#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