a6ee556c76
This patch fixes two issues with return type deduction in the presence of an abbreviated function template. The first issue (PR 69448) is that if a placeholder auto return type contains any modifiers such as & or *, then the abbreviated function template compensation in splice_late_return_type does not get performed for the underlying auto node, leading to incorrect return type deduction. This happens because splice_late_return_type does not consider that a placeholder auto return type might have modifiers. To fix this it seems we need to look through modifiers in the return type to obtain the location of the underlying auto node in order to replace it with the adjusted auto node. To that end this patch refactors the utility function find_type_usage to return a pointer to the matched tree, and uses it to find and replace the underlying auto node. The second issue (PR 80471) is that the AUTO_IS_DECLTYPE flag is not being preserved in splice_late_return_type when compensating for an abbreviated function template, leading to us treating a decltype(auto) return type as if it was an auto return type. Fixed by making make_auto_1 set the AUTO_IS_DECLTYPE flag whenever we're building a decltype(auto) node and adjusting callers appropriately. The test for PR 80471 is adjusted to expect the correct behavior. gcc/cp/ChangeLog: PR c++/69448 PR c++/80471 * type-utils.h (find_type_usage): Refactor to take a tree * and to return a tree *, and update documentation accordingly. * pt.c (make_auto_1): Set AUTO_IS_DECLTYPE when building a decltype(auto) node. (make_constrained_decltype_auto): No need to explicitly set AUTO_IS_DECLTYPE anymore. (splice_late_return_type): Use find_type_usage to find and replace a possibly nested auto node instead of using is_auto. Check test for is_auto into an assert when deciding whether to late_return_type. (type_uses_auto): Adjust the call to find_type_usage. * parser.c (cp_parser_decltype): No need to explicitly set AUTO_IS_DECLTYPE anymore. libcc1/ChangeLog: PR c++/69448 PR c++/80471 * libcp1plugin.cc (plugin_get_expr_type): No need to explicitly set AUTO_IS_DECLTYPE anymore. gcc/testsuite/ChangeLog: PR c++/69448 PR c++/80471 * g++.dg/concepts/abbrev3.C: New test. * g++.dg/cpp2a/concepts-pr80471.C: Adjust a static_assert to expect the correct behavior. * g++.dg/cpp0x/auto9.C: Adjust a dg-error directive.
433 lines
14 KiB
Plaintext
433 lines
14 KiB
Plaintext
2020-02-12 Patrick Palka <ppalka@redhat.com>
|
|
|
|
PR c++/69448
|
|
PR c++/80471
|
|
* libcp1plugin.cc (plugin_get_expr_type): No need to explicitly set
|
|
AUTO_IS_DECLTYPE anymore.
|
|
|
|
2020-01-07 Paolo Carlini <paolo.carlini@oracle.com>
|
|
|
|
* libcp1plugin.cc (plugin_build_new_expr): Update build_new call.
|
|
|
|
2020-01-01 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
Update copyright years.
|
|
|
|
2019-12-30 Paolo Carlini <paolo.carlini@oracle.com>
|
|
|
|
* libcp1plugin.cc (plugin_build_unary_expr): Update delete_sanity
|
|
call.
|
|
|
|
2019-12-18 Paolo Carlini <paolo.carlini@oracle.com>
|
|
|
|
* libcp1plugin.cc (plugin_build_unary_expr): Update build_throw
|
|
and cxx_sizeof_or_alignof_expr calls.
|
|
(plugin_build_unary_type_expr): Likewise for
|
|
cxx_sizeof_or_alignof_type.
|
|
|
|
2019-12-09 Paolo Carlini <paolo.carlini@oracle.com>
|
|
|
|
* libcp1plugin.cc (plugin_build_cast_expr): Adjust build_cast
|
|
declaration.
|
|
|
|
2019-12-05 Paolo Carlini <paolo.carlini@oracle.com>
|
|
|
|
* libcp1plugin.cc (plugin_build_expression_list_expr): Adjust
|
|
build_functional_cast call.
|
|
|
|
2019-11-25 Paolo Carlini <paolo.carlini@oracle.com>
|
|
|
|
* libcp1plugin.cc (plugin_pragma_push_user_expression): Update
|
|
cp_build_indirect_ref call.
|
|
|
|
2019-09-27 Maciej W. Rozycki <macro@wdc.com>
|
|
|
|
* configure: Regenerate.
|
|
|
|
2019-05-21 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_add_using_decl): Use
|
|
finish_nonmember_using_decl.
|
|
|
|
2019-05-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_add_using_namespace): Call renamed
|
|
finish_using_directive.
|
|
|
|
2019-01-01 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
Update copyright years.
|
|
|
|
2018-11-13 David Malcolm <dmalcolm@redhat.com>
|
|
|
|
* libcc1plugin.cc: Replace "source_location" with "location_t".
|
|
(plugin_context::get_source_location): Rename to...
|
|
(plugin_context::get_location_t): ...this.
|
|
* libcp1plugin.cc: Likewise.
|
|
|
|
2018-10-31 Joseph Myers <joseph@codesourcery.com>
|
|
|
|
PR bootstrap/82856
|
|
* configure.ac: Remove AC_PREREQ.
|
|
* Makefile.in, aclocal.m4, configure: Regenerate.
|
|
|
|
2018-04-18 David Malcolm <dmalcolm@redhat.com>
|
|
|
|
PR jit/85384
|
|
* configure: Regenerate.
|
|
|
|
2018-01-03 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
Update copyright years.
|
|
|
|
2017-11-14 Boris Kolpackov <boris@codesynthesis.com>
|
|
|
|
* configure: Regenerate.
|
|
|
|
2017-11-16 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
* Makefile.am: Remove references to c-compiler-name.h and
|
|
cp-compiler-name.h
|
|
* Makefile.in: Regenerate.
|
|
* compiler-name.hh: New file.
|
|
* libcc1.cc: Don't include c-compiler-name.h. Include
|
|
compiler-name.hh.
|
|
* libcp1.cc: Don't include cp-compiler-name.h. Include
|
|
compiler-name.hh.
|
|
|
|
2017-11-01 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Use
|
|
DECL_OVERLOADED_OPERATOR_CODE_RAW.
|
|
|
|
2017-10-31 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Use ovl_op_identifier.
|
|
Directly set operator code.
|
|
(plugin_build_dependent_expr): Use ovl_op_identifier.
|
|
|
|
2017-10-04 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (supplement_binding): Don't use
|
|
maybe_remove_implicit_alias.
|
|
|
|
2017-07-20 Nathan Sidwell <nathan@acm.org>
|
|
|
|
Remove TYPE_METHODS.
|
|
* libcp1plugin.cc (plugin_build_decl): Member fns are on TYPE_FIELDS.
|
|
|
|
2017-07-12 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Use
|
|
DECL_CXX_{CON,DE}STRUCTOR directly.
|
|
|
|
2017-07-05 Richard Sandiford <richard.sandiford@linaro.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_field): Use SET_DECL_MODE.
|
|
|
|
2017-06-30 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Use make_conv_op_name.
|
|
(plugin_build_dependent_expr): Likewise.
|
|
|
|
2017-06-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Don't set
|
|
DECL_ASSIGNMENT_OPERATOR_P.
|
|
|
|
2017-06-16 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Adjust parm building.
|
|
|
|
2017-05-26 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_make_namespace_inline): Push onto linees.
|
|
|
|
* libcp1plugin.cc (plugin_add_using_namespace): Call
|
|
finish_namespace_using_directive.
|
|
|
|
2017-05-25 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_make_namespace_inline): Check and set
|
|
DECL_NAMESPACE_INLINE_P.
|
|
|
|
2017-05-23 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_add_using_decl): Call
|
|
finish_namespace_using_decl. Use assert not unreachable.
|
|
|
|
2017-05-11 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (safe_pushdecl_maybe_friend): Call pushdecl.
|
|
|
|
2017-05-10 Nathan Sidwell <nathan@acm.org>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Adjust add_method call.
|
|
|
|
2017-04-15 Alexandre Oliva <aoliva@redhat.com>
|
|
|
|
* libcp1plugin.cc (plugin_build_decl): Call name_unnamed_type.
|
|
|
|
2017-01-30 Alexandre Oliva <aoliva@redhat.com>
|
|
|
|
Introduce C++ support.
|
|
* Makefile.am (AM_CPPFLAGS): Move some -I flags to...
|
|
(CPPFLAGS_FOR_C_FAMILY, CPPFLAGS_FOR_C, CPPFLAGS_FOR_CXX): ...
|
|
new macros.
|
|
(plugin_LTLIBRARIES): Add libcp1plugin.la.
|
|
(BUILT_SOURCES, MOSTLYCLEANFILES): Add...
|
|
(cp-compiler-name.h): ... this. New.
|
|
(c-compiler-name.h): Rename all over from...
|
|
(compiler-name.h): ... this. Create it atomically.
|
|
(marshall_c_source, marshall_cxx_source): New macros.
|
|
(libcc1plugin_la_SOURCES): Rename plugin.cc to libcc1plugin.cc.
|
|
Add marshall_c_source expansion.
|
|
(libcc1plugin.lo_CPPFLAGS): New macro.
|
|
(libcp1plugin_la_LDFLAGS): Likewise.
|
|
(libcp1plugin_la_SOURCES): Likewise.
|
|
(libcp1plugin.lo_CPPFLAGS): Likewise.
|
|
(libcp1plugin_la_LIBADD): Likewise.
|
|
(libcp1plugin_la_DEPENDENCIES): Likewise.
|
|
(libcp1plugin_la_LINK): Likewise.
|
|
(libcc1_la_SOURCES): Added marshall_c_source and
|
|
marshall_cxx_source expansions.
|
|
* Makefile.in: Rebuild.
|
|
* compiler-name.h: Rename all over to...
|
|
* c-compiler-name.h: ... this. Define C_COMPILER_NAME instead
|
|
of COMPILER_NAME.
|
|
* plugin.cc: Rename all over to...
|
|
* libcc1plugin.cc: ... this. Include marshall-c.hh.
|
|
(address_rewriter): Drop cleaning up of VLA sizes.
|
|
(plugin_build_decl): Mark decls as external.
|
|
(plugin_tagbind): Propagate name to all variants.
|
|
(build_anonymous_node): New.
|
|
(plugin_build_record_type): Use it instead of make_node.
|
|
(plugin_build_union_type): Likewise.
|
|
(plugin_build_enum_type): Likewise.
|
|
(plugin_finish_record_or_union): Update all type variants.
|
|
(safe_lookup_builtin_type): New.
|
|
(plugin_int_check): Factor out of, and add checks to, ...
|
|
(plugin_int_type): ... this. Rename to...
|
|
(plugin_int_type_v0): ... this.
|
|
(plugin_int_type): New interface, new implementation.
|
|
(plugin_char_type): New.
|
|
(plugin_float_type_v0): Rename from...
|
|
(plugin_float_type): ... this. New interface, new implementation.
|
|
(plugin_init): Bump handshake version.
|
|
* libcc1.cc: Include marshall-c.hh. Drop gcc-interface.h.
|
|
(call_binding_oracle): Rename to...
|
|
(c_call_binding_oracle): ... this, into anonymous namespace.
|
|
(call_symbol_address): Rename to...
|
|
(c_call_symbol_address): ... this, likewise.
|
|
(GCC_METHOD#): Move methods into cc1plugin::c:: namespace.
|
|
(libcc1::compiler::find): Refer to C_COMPILER_NAME.
|
|
(fork_exec): Bump to GCC_C_FE_VERSION_1.
|
|
(libcc1_compile): Prefix callbacks with c_.
|
|
(gcc_c_fe_context): Accept GCC_C_FE_VERSION_1.
|
|
* libcc1.sym: Export gcc_cp_fe_context.
|
|
* libcp1.cc: New, mostly copied and adjusted from libcc1.cc.
|
|
* libcp1plugin.cc: New, initially copied from libcc1plugin.cc.
|
|
* libcp1plugin.sym: New.
|
|
* marshall-c.hh: New. Move C-specific types from...
|
|
* marshall.cc: ... this.
|
|
(cc1_plugin::marshall_array_start): New.
|
|
(cc1_plugin::marshall_array_elmts): New.
|
|
(cc1_plugin::marshall for gcc_type_array): Use the above.
|
|
(cc1_plugin::unmarshall_array_start): New.
|
|
(cc1_plugin::unmarshall_array_elmts): New.
|
|
(cc1_plugin::unmarshall for gcc_type_array): Use the above.
|
|
* marshall.hh: Declare the new array building blocks.
|
|
Drop C-specific unmarshall declarations.
|
|
* marshall-cp.hh: New.
|
|
* names.cc (GCC_METHOD#): Add LANG:: to method names.
|
|
(LANG): Define while including gcc-c-fe.def and gcc-cp-fe.def.
|
|
* names.hh: Include gcc-c-fe.def and gcc-cp-fe.def in the
|
|
corresponding namespaces.
|
|
* rpc.hh: Don't include marshall.hh.
|
|
[GCC_CP_INTERFACE_H] (argument_wrapper): Specialize for
|
|
gcc_vbase_array, gcc_cp_template_args, gcc_cp_function_args.
|
|
|
|
2017-01-30 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
* findcomp.cc: Include system.h.
|
|
(search_dir): Return absolute filename.
|
|
|
|
* libcc1.cc (libcc1): Add class compiler with field compilerp,
|
|
class compiler_triplet_regexp and class
|
|
compiler_driver_filename.
|
|
(libcc1::libcc1): Initialize compilerp.
|
|
(libcc1::~libcc1): Delete compilerp.
|
|
(libcc1::compiler::find, libcc1::compiler_triplet_regexp::find)
|
|
(libcc1::compiler_driver_filename::find): New methods.
|
|
(libcc1_set_arguments): Remove parameter triplet_regexp.
|
|
(libcc1_set_triplet_regexp, libcc1_set_driver_filename)
|
|
(libcc1_set_arguments_v0): New functions.
|
|
(vtable): Use libcc1_set_arguments_v0, add
|
|
libcc1_set_arguments, libcc1_set_triplet_regexp and
|
|
libcc1_set_driver_filename.
|
|
|
|
* libcc1.cc: Include intl.h.
|
|
(struct libcc1): Add field verbose.
|
|
(libcc1::libcc1): Initialize it.
|
|
(libcc1_set_verbose): New function.
|
|
(libcc1_set_arguments): Print messages for VERBOSE.
|
|
(libcc1_compile): Remove parameter verbose. Use VERBOSE from
|
|
SELF.
|
|
(libcc1_compile_v0): New function.
|
|
(vtable): Use libcc1_compile_v0 and add libcc1_compile and
|
|
libcc1_set_verbose.
|
|
|
|
* libcc1.cc (vtable): Update to GCC_FE_VERSION_1.
|
|
(gcc_c_fe_context): Accept also GCC_FE_VERSION_1.
|
|
|
|
2017-01-17 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
PR other/79046
|
|
* configure.ac: Add GCC_BASE_VER. For --with-gcc-major-version-only
|
|
use just major number from BASE-VER.
|
|
* configure: Regenerated.
|
|
* Makefile.in: Regenerated.
|
|
|
|
2017-01-04 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
Update copyright years.
|
|
|
|
2016-11-18 Richard Sandiford <richard.sandiford@arm.com>
|
|
Alan Hayward <alan.hayward@arm.com>
|
|
David Sherwood <david.sherwood@arm.com>
|
|
|
|
* plugin.cc (plugin_build_add_field): Use SET_DECL_MODE.
|
|
|
|
2016-06-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
Update copyrights.
|
|
|
|
2016-04-18 Michael Matz <matz@suse.de>
|
|
|
|
* plugin.cc (plugin_finish_record_or_union): Use SET_TYPE_ALIGN.
|
|
|
|
2016-04-11 Segher Boessenkool <segher@kernel.crashing.org>
|
|
|
|
PR bootstrap/70173
|
|
* Makefile.am (MOSTLYCLEANFILES): New, add compiler-name.h .
|
|
(compiler-name.h): Shorten recipe so that it fits the line.
|
|
* Makefile.in: Regenerate.
|
|
|
|
2016-03-14 Andreas Schwab <schwab@suse.de>
|
|
|
|
* configure.ac (CONFIG_STATUS_DEPENDENCIES): Substitute.
|
|
* configure: Regenerate.
|
|
* Makefile.in: Regenerate.
|
|
|
|
2015-06-25 Richard Sandiford <richard.sandiford@arm.com>
|
|
|
|
* plugin.cc (decl_addr_hasher): Inherit from free_ptr_hash
|
|
rather than typed_free_remove. Remove redudant typedefs.
|
|
|
|
2015-06-25 Richard Sandiford <richard.sandiford@arm.com>
|
|
|
|
* plugin.cc (string_hasher): Inherit from nofree_ptr_hash rather
|
|
than typed_noop_remove. Remove redudant typedefs.
|
|
(plugin_context): Use nofree_ptr_hash rather than pointer_hash.
|
|
(plugin_context::mark): Likewise.
|
|
|
|
2015-05-13 Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>
|
|
|
|
* Makefile.in: Regenerated with automake-1.11.6.
|
|
* aclocal.m4: Likewise.
|
|
* configure: Likewise.
|
|
|
|
2015-04-18 Trevor Saunders <tsaunders@mozilla.com>
|
|
|
|
* plugin.cc: Adjust for hash_table changes.
|
|
|
|
2015-04-15 Andreas Schwab <schwab@suse.de>
|
|
|
|
PR bootstrap/65763
|
|
* Makefile.am (gcc_build_dir): Remove $(host_subdir)/ part.
|
|
* Makefile.in: Regenerated.
|
|
|
|
2015-01-30 Joseph Myers <joseph@codesourcery.com>
|
|
|
|
* plugin.cc: All callers of fatal_error changed to pass
|
|
input_location as first argument.
|
|
|
|
2015-01-09 Michael Collison <michael.collison@linaro.org>
|
|
|
|
* plugin.cc: Include hash-set.h, machmode.h, vec.h, double-int.h,
|
|
input.h, alias.h, symtab.h, options.h, fold-const.h, wide-int.h and inchash.h
|
|
due to flattening of tree.h.
|
|
|
|
2014-11-21 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
PR bootstrap/63784
|
|
* configure: Regenerated.
|
|
|
|
2014-11-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
* configure.ac (libcc1_cv_lib_sockets): Check for -lsocket -lnsl.
|
|
* configure: Regenerate.
|
|
* connection.cc: Include <string.h>.
|
|
* libcc1.cc (libcc1_compile): Use AF_UNIX instead of AF_LOCAL.
|
|
|
|
2014-11-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
|
|
|
PR target/63610
|
|
* configure: Regenerate.
|
|
|
|
2014-11-11 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
|
|
|
PR bootstrap/63699
|
|
PR bootstrap/63750
|
|
* plugin.cc: Don't include <string>.
|
|
|
|
2014-10-29 Jakub Jelinek <jakub@redhat.com>
|
|
Phil Muldoon <pmuldoon@redhat.com>
|
|
|
|
* configure.ac: Remove -Werror addition to WARN_FLAGS. Add
|
|
ACX_PROG_CC_WARNINGS_ARE_ERRORS and AC_ARG_VAR for GMPINC.
|
|
* Makefile.am (AM_CPPFLAGS): Add $(GMPINC).
|
|
(WERROR_FLAG): Remove.
|
|
(AM_CXXFLAGS): Use $(WERROR) instead of $(WERROR_FLAG).
|
|
* configure: Regenerated.
|
|
* Makefile.in: Regenerated.
|
|
|
|
2014-10-29 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
* Makefile.am (CXXFLAGS, LDFLAGS): Filter out -fsanitize=address.
|
|
(libiberty_normal, libiberty_noasan, libiberty_pic, libiberty_dep):
|
|
New variables.
|
|
(libiberty): Set to -Wc, followed by the first existing noasan/,
|
|
pic/ or . libiberty.a.
|
|
(libcc1plugin_la_DEPENDENCIES, libcc1plugin_la_LINK,
|
|
libcc1_la_DEPENDENCIES, libcc1_la_LINK, LTLDFLAGS): New variables.
|
|
* Makefile.in: Regenerated.
|
|
|
|
2014-10-27 Phil Muldoon <pmuldoon@redhat.com>
|
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
Tom Tromey <tromey@redhat.com>
|
|
|
|
* aclocal.m4: New file.
|
|
* callbacks.cc: New file.
|
|
* callbacks.hh: New file.
|
|
* cc1plugin-config.h.in: New file.
|
|
* configure: New file.
|
|
* configure.ac: New file.
|
|
* connection.cc: New file.
|
|
* connection.hh: New file.
|
|
* findcomp.cc: New file.
|
|
* findcomp.hh: New file.
|
|
* libcc1.cc: New file.
|
|
* libcc1plugin.sym: New file.
|
|
* libcc1.sym: New file.
|
|
* Makefile.am: New file.
|
|
* Makefile.in: New file.
|
|
* marshall.cc: New file.
|
|
* marshall.hh: New file.
|
|
* names.cc: New file.
|
|
* names.hh: New file.
|
|
* plugin.cc: New file.
|
|
* rpc.hh: New file.
|
|
* status.hh: New file.
|