gcc/libstdc++-v3/include/std
Jason Merrill 51dc660315 Implement P0012R1, Make exception specifications part of the type system.
gcc/cp/
	* cp-tree.h (enum tsubst_flags): Add tf_fndecl_type.
	(flag_noexcept_type, ce_type): New.
	* call.c (build_conv): Add ck_fnptr.
	(enum conversion_kind): Change ck_tsafe to ck_fnptr.
	(convert_like_real): Likewise.
	(standard_conversion): Likewise.  Allow function pointer
	conversions for pointers to member functions.
	(reference_compatible_p): Allow function pointer conversions.
	(direct_reference_binding): Likewise.
	(reference_binding): Reference-compatible is no longer a subset of
	reference-related.
	(is_subseq): Also strip ck_lvalue after next_conversion.
	* class.c (instantiate_type): Check fnptr_conv_p.
	(resolve_address_of_overloaded_function): Likewise.
	* cvt.c (can_convert_tx_safety): Now static.
	(noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New.
	* decl.c (flag_noexcept_type): Define.
	(cxx_init_decl_processing): Set it.
	(bad_specifiers): Check it.
	(grokdeclarator) [cdk_function]: Add exception-spec to type here.
	* lambda.c (maybe_add_lambda_conv_op): Add exception-spec to
	returned pointer.
	* mangle.c (struct globals): Add need_cxx1z_warning.
	(mangle_decl): Check it.
	(write_exception_spec): New.
	(write_function_type): Call it.
	(canonicalize_for_substitution): Handle exception spec.
	(write_type): Likewise.
	(write_encoding): Set processing_template_decl across mangling of
	partially-instantiated type.
	* pt.c (determine_specialization): Pass tf_fndecl_type.
	(tsubst_decl, fn_type_unification): Likewise.
	(tsubst): Strip tf_fndecl_type, pass it to
	tsubst_exception_specification.
	(convert_nontype_argument_function): Handle function pointer
	conversion.
	(convert_nontype_argument): Likewise.
	(unify, for_each_template_parm_r): Walk into noexcept-specifier.
	* rtti.c (ptr_initializer): Encode noexcept.
	* tree.c (canonical_eh_spec): New.
	(build_exception_variant): Use it.
	* typeck.c (composite_pointer_type): Handle fnptr conversion.
	(comp_except_specs): Compare canonical EH specs.
	(structural_comptypes): Call it.
gcc/c-family/
	* c.opt (Wc++1z-compat): New.
	* c-cppbuiltin.c (c_cpp_builtins): Add __cpp_noexcept_function_type.
libstdc++-v3/
	* include/bits/c++config (_GLIBCXX_NOEXCEPT_PARM)
	(_GLIBCXX_NOEXCEPT_QUAL): New.
	* include/std/type_traits (is_function): Use them.
	* libsubc++/new (launder): Likewise.
	* libsupc++/cxxabi.h (__pbase_type_info::__masks): Add
	__noexcept_mask.
	* libsupc++/pbase_type_info.cc (__do_catch): Handle function
	pointer conversion.
libiberty/
	* cp-demangle.c (is_fnqual_component_type): New.
	(d_encoding, d_print_comp_inner, d_print_mod_list): Use it.
	(FNQUAL_COMPONENT_CASE): New.
	(d_make_comp, has_return_type, d_print_comp_inner)
	(d_print_function_type): Use it.
	(next_is_type_qual): New.
	(d_cv_qualifiers, d_print_mod): Handle noexcept and throw-spec.
include/
	* demangle.h (enum demangle_component_type): Add
	DEMANGLE_COMPONENT_NOEXCEPT, DEMANGLE_COMPONENT_THROW_SPEC.

From-SVN: r241944
2016-11-07 18:09:29 -05:00
..
algorithm Update copyright years. 2016-01-04 15:30:50 +01:00
any Make any's copy assignment operator exception-safe, 2016-10-11 01:08:58 +03:00
array Add constexpr to <iterator> and <array> for C++17 2016-08-23 11:13:12 +01:00
atomic Define std::atomic<T>::is_always_lock_free for C++17 2016-08-19 16:42:27 +01:00
bitset Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
chrono Replace non-constexpr decrement in std::chrono::floor 2016-10-13 15:42:09 +01:00
codecvt Update copyright years. 2016-01-04 15:30:50 +01:00
complex Fix libstdc++ versioned namespace build 2016-10-03 15:35:28 +01:00
condition_variable Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
deque Update copyright years. 2016-01-04 15:30:50 +01:00
forward_list Update copyright years. 2016-01-04 15:30:50 +01:00
fstream Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
functional Split <functional> into smaller pieces 2016-10-21 16:32:25 +01:00
future Split <functional> into smaller pieces 2016-10-21 16:32:25 +01:00
iomanip Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
ios Update copyright years. 2016-01-04 15:30:50 +01:00
iosfwd Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
iostream Update copyright years. 2016-01-04 15:30:50 +01:00
istream LWG 2328 Rvalue stream extraction should use perfect forwarding 2016-07-20 19:21:53 +01:00
iterator Update copyright years. 2016-01-04 15:30:50 +01:00
limits Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
list Update copyright years. 2016-01-04 15:30:50 +01:00
locale Update copyright years. 2016-01-04 15:30:50 +01:00
map Update copyright years. 2016-01-04 15:30:50 +01:00
memory Avoid #include <functional> in other headers 2016-10-13 17:59:19 +01:00
mutex Split <functional> into smaller pieces 2016-10-21 16:32:25 +01:00
numeric LWG 2733, LWG 2759 reject bool in gcd and lcm 2016-10-10 13:17:34 +01:00
optional Do the operator= SFINAE in the return type for optional, 2016-10-20 14:54:52 +03:00
ostream Update copyright years. 2016-01-04 15:30:50 +01:00
queue Update copyright years. 2016-01-04 15:30:50 +01:00
random Update copyright years. 2016-01-04 15:30:50 +01:00
ratio Implement C++17 variable templates for type traits. 2016-07-29 22:01:39 +03:00
regex Split <functional> into smaller pieces 2016-10-21 16:32:25 +01:00
scoped_allocator Avoid copies in std::scoped_allocator_adaptor piecewise construction 2016-10-14 17:12:21 +01:00
set Update copyright years. 2016-01-04 15:30:50 +01:00
shared_mutex Define C++17 feature-test macros 2016-08-03 19:11:10 +01:00
sstream Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
stack Update copyright years. 2016-01-04 15:30:50 +01:00
stdexcept Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
streambuf Update copyright years. 2016-01-04 15:30:50 +01:00
string Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
string_view Remove redundant const qualifliers from string_view 2016-10-11 11:33:24 +01:00
system_error Implement C++17 variable templates for type traits. 2016-07-29 22:01:39 +03:00
thread PR77998 Remove std:🧵:_Invoker::result_type 2016-10-17 13:23:09 +01:00
tuple re PR libstdc++/77802 (Boost Fiber doesn't compile) 2016-10-03 14:06:53 +03:00
type_traits Implement P0012R1, Make exception specifications part of the type system. 2016-11-07 18:09:29 -05:00
typeindex Update copyright years. 2016-01-04 15:30:50 +01:00
unordered_map Update copyright years. 2016-01-04 15:30:50 +01:00
unordered_set Update copyright years. 2016-01-04 15:30:50 +01:00
utility Implement LWG 2744 and LWG 2754. 2016-08-15 18:06:09 +03:00
valarray Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00
variant re PR libstdc++/77944 (FAIL: 20_util/variant/compile.cc (test for excess errors)) 2016-10-14 09:58:05 +00:00
vector Remove trailing whitespace from libstdc++ headers 2016-06-16 14:47:35 +01:00