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
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
080514-1.C | Loading commit data... | |
alias1.C | Loading commit data... | |
anon1.C | Loading commit data... | |
anon1a.cc | Loading commit data... | |
anon2.C | Loading commit data... | |
arm-iwmmxt-unwind.C | Loading commit data... | |
arm-vfp-unwind.C | Loading commit data... | |
array1.C | Loading commit data... | |
async-unwind1.C | Loading commit data... | |
async-unwind2.C | Loading commit data... | |
builtin1.C | Loading commit data... | |
builtin2.C | Loading commit data... | |
builtin3.C | Loading commit data... | |
builtin4.C | Loading commit data... | |
cast1.C | Loading commit data... | |
catch1.C | Loading commit data... | |
catch2.C | Loading commit data... | |
catch3.C | Loading commit data... | |
catch4.C | Loading commit data... | |
catch5.C | Loading commit data... | |
check-vect.h | Loading commit data... | |
cleanup1.C | Loading commit data... | |
cleanup2.C | Loading commit data... | |
cleanup3.C | Loading commit data... | |
cleanup4.C | Loading commit data... | |
cleanup5.C | Loading commit data... | |
comdat1.C | Loading commit data... | |
cond1.C | Loading commit data... | |
cond2.C | Loading commit data... | |
cond3.C | Loading commit data... | |
cond4.C | Loading commit data... | |
cond5.C | Loading commit data... | |
cond6.C | Loading commit data... | |
crash1.C | Loading commit data... | |
crossjump1.C | Loading commit data... | |
ctor1.C | Loading commit data... | |
ctor2.C | Loading commit data... | |
ctor3.C | Loading commit data... | |
dead1.C | Loading commit data... | |
defarg1.C | Loading commit data... | |
delayslot1.C | Loading commit data... | |
delete1.C | Loading commit data... | |
div.C | Loading commit data... | |
dtor1.C | Loading commit data... | |
dtor2.C | Loading commit data... | |
dtor3.C | Loading commit data... | |
ehopt1.C | Loading commit data... | |
elide1.C | Loading commit data... | |
elide2.C | Loading commit data... | |
filter1.C | Loading commit data... | |
filter2.C | Loading commit data... | |
forced1.C | Loading commit data... | |
forced2.C | Loading commit data... | |
forced3.C | Loading commit data... | |
forced4.C | Loading commit data... | |
fp-regs.C | Loading commit data... | |
gcsec1.C | Loading commit data... | |
goto1.C | Loading commit data... | |
goto2.C | Loading commit data... | |
goto3.C | Loading commit data... | |
ia64-1.C | Loading commit data... | |
ia64-2.C | Loading commit data... | |
init-temp1.C | Loading commit data... | |
init-temp2.C | Loading commit data... | |
loop1.C | Loading commit data... | |
loop2.C | Loading commit data... | |
nested-try.C | Loading commit data... | |
new1.C | Loading commit data... | |
nrv1.C | Loading commit data... | |
omit-frame-pointer.C | Loading commit data... | |
omit-frame-pointer2.C | Loading commit data... | |
partial1.C | Loading commit data... | |
ppc64-sighandle-cr.C | Loading commit data... | |
pr29166.C | Loading commit data... | |
pr38662.C | Loading commit data... | |
pr41819.C | Loading commit data... | |
pr42859.C | Loading commit data... | |
pr43365.C | Loading commit data... | |
pr45569.C | Loading commit data... | |
registers1.C | Loading commit data... | |
scope1.C | Loading commit data... | |
shadow1.C | Loading commit data... | |
sighandle.C | Loading commit data... | |
simd-1.C | Loading commit data... | |
simd-2.C | Loading commit data... | |
simd-3.C | Loading commit data... | |
simd-4.C | Loading commit data... | |
simd-5.C | Loading commit data... | |
spbp.C | Loading commit data... | |
spec1.C | Loading commit data... | |
spec10.C | Loading commit data... | |
spec11.C | Loading commit data... | |
spec2.C | Loading commit data... | |
spec3.C | Loading commit data... | |
spec4.C | Loading commit data... | |
spec5.C | Loading commit data... | |
spec6.C | Loading commit data... | |
spec7.C | Loading commit data... | |
spec8.C | Loading commit data... | |
spec9.C | Loading commit data... | |
stabilize.C | Loading commit data... | |
stdarg1.C | Loading commit data... | |
subreg-1.C | Loading commit data... | |
synth1.C | Loading commit data... | |
synth2.C | Loading commit data... | |
table.C | Loading commit data... | |
template1.C | Loading commit data... | |
template2.C | Loading commit data... | |
terminate1.C | Loading commit data... | |
throw1.C | Loading commit data... | |
throw2.C | Loading commit data... | |
throw3.C | Loading commit data... | |
uncaught1.C | Loading commit data... | |
uncaught2.C | Loading commit data... | |
uncaught3.C | Loading commit data... | |
uncaught4.C | Loading commit data... | |
unexpected1.C | Loading commit data... | |
unwind-direct.C | Loading commit data... | |
unwind1.C | Loading commit data... | |
unwind2.C | Loading commit data... | |
weak1-a.cc | Loading commit data... | |
weak1.C | Loading commit data... |