On Sep 23, 2016, Alexandre Oliva <aol...@redhat.com> wrote:

> This patchset adds support for the C++ language to libcc1.
> It updates a few patches for libcc1 by Jan Kratochvil, posted long ago
> but IIRC not reviewed; it updates a patch that adds support for
> representing aliases and trampolines in dwarf2+ debug info (useful for
> naming all cdtors clones), adding support for combined dwarf2 and vms
> debug output compared with the earlier version; and finally the actual
> extension of libcc1 to support the C++ language, with a few changes to
> the C++ front-end to make some functionality available to libcc1, to
> introduce symbol lookups through libcc1, to enable code snippets to be
> regarded as friends of every class, and other minor adjustments.

> Regstrapped on x86_64-linux-gnu and i686-linux-gnu; libcc1 was tested
> with GDB branch users/pmuldoon/c++compile, where GDB support for C++
> compile code is being developed.

> Ok to install?

Ping?

https://gcc.gnu.org/ml/gcc-patches/2016-09/msg01744.html

> https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02218.html
> include/ChangeLog
> 2015-05-24  Jan Kratochvil  <jan.kratoch...@redhat.com>

>       * gcc-interface.h (enum gcc_base_api_version): Add GCC_FE_VERSION_1.

> libcc1/ChangeLog
> 2015-05-24  Jan Kratochvil  <jan.kratoch...@redhat.com>

>       * libcc1.cc (vtable): Update to GCC_FE_VERSION_1.
>       (gcc_c_fe_context): Accept also GCC_FE_VERSION_1.



> https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02219.html
> include/ChangeLog
> 2015-05-24  Jan Kratochvil  <jan.kratoch...@redhat.com>

>       * gcc-interface.h (enum gcc_base_api_version): Add comment to
>       GCC_FE_VERSION_1.
>       (struct gcc_base_vtable): Rename compile to compile_v0.  Update comment
>       for compile.  New methods set_verbose and compile.

> libcc1/ChangeLog
> 2015-05-24  Jan Kratochvil  <jan.kratoch...@redhat.com>

>       * 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.



> https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02220.html
> include/ChangeLog
> 2015-05-24  Jan Kratochvil  <jan.kratoch...@redhat.com>

>       * gcc-interface.h (enum gcc_base_api_version): Update comment for
>       GCC_FE_VERSION_1.
>       (struct gcc_base_vtable): Rename set_arguments to set_arguments_v0.
>       Add set_arguments, set_triplet_regexp and set_driver_filename.

> libcc1/ChangeLog
> 2015-05-24  Jan Kratochvil  <jan.kratoch...@redhat.com>

>       * 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.



> https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02221.html
> libcc1/ChangeLog
> 2015-05-24  Jan Kratochvil  <jan.kratoch...@redhat.com>

>       * findcomp.cc: Include system.h.
>       (search_dir): Return absolute filename.




> Ping?  https://gcc.gnu.org/ml/gcc-patches/2016-02/msg01407.html
> support aliases and trampolines in dwarf2

> for  gcc/ChangeLog

>       * debug.h (struct gcc_debug_hooks): Add aliased_decl and
>       trampoline_decl.
>       * dwarf2out.c (dwarf2out_aliased_decl): New.
>       (dwarf2out_trampoline_decl): New.
>       (dwarf2_debug_hooks): Add them.
>       (dwarf2_name): Skip leading '*' returned by langhook.
>       (dwarf2_lineno_debug_hooks): Add dummies.
>       * debug.c (do_nothing_debug_hooks): Likewise.
>       * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
>       * sdbout.c (sdb_debug_hooks): Likewise.
>       * vmsdbgout.c (vmsdbgout_aliased_decl): New.
>       (vmsdbgout_trampoline_decl): New.
>       (vmsdbg_debug_hooks): Add them.
>       * cgraph.h (cgraph_node::is_lang_trampoline): Declare.
>       * cgraphunit.c: Include demangle.h.
>       (cgraph_node::expand_thunk): Call function_decl debug_hook
>       after assembly expansion.  Do not mark thunk as ignored in
>       gimple expansion.
>       (cxx_cdtor_trampoline_p): New.
>       (cgraph_node::is_lang_trampoline): New.
>       (cgraph_node::assemble_thunks_and_aliases): Call the new
>       debug_hooks.
>       (symbol_table::output_weakrefs): Likewise.
>       * varpool.c (varpool_node::assemble_aliases): Likewise.

> for  gcc/cp/ChangeLog

>       * method.c (make_alias_for): Copy DECL_IGNORED_P.

> for  gcc/testsuite/ChangeLog

>       * g++.dg/debug/dwarf2/cdtor-1.C: Adjust linkage_name count.
>       * g++.dg/debug/dwarf2/cdtor-2.C: New.
>       * g++.dg/debug/dwarf2/cdtor-3.C: New.
>       * g++.dg/debug/dwarf2/covariant-1.C: New.
>       * gcc.dg/debug/dwarf2/attr-alias-1.c: New.
>       * gcc.dg/debug/dwarf2/attr-alias-2.c: New.
>       * gcc.dg/debug/dwarf2/attr-weakref-1.c: New.
>       * gcc.dg/debug/dwarf2/attr-weakref-2.c: New.
 


> Introduce C++ support in libcc1

> Extend libcc1's with an API for C++ support.

> Extend libcc1's C API to distinguish between integral types with the
> same width, as in C++.  Likewise for float types.

> Export small bits of functionality from the C++ front-end for use in
> libcc1.  Add support for the C++ front-end to look up names and
> addresses using a libcc1-registered binding oracle.  Add support for
> global friends.


> for  gcc/cp/ChangeLog

>       Introduce C++ support in libcc1.
>       * cp-tree.h (struct lang_identifier): Add oracle_looked_up.
>       (ansi_litopname): Declare.
>       (add_to_global_friend_list): Declare.
>       (remove_from_global_friend_list): Declare.
>       (is_global_friend): Declare.
>       (enum cp_oracle_request): New type.
>       (cp_binding_oracle_function): New type.
>       (cp_binding_oracle): Declare.
>       (cp_finish_injected_record_type): Declare.
>       * friend.c (global_friend_list): New var.
>       (add_to_global_friend_list): New fn.
>       (find_in_global_friend_list): New fn.
>       (remove_from_global_friend_list): New fn.
>       (is_global_friend): New fn.
>       (is_friend): Call is_global_friend.
>       * name-lookup.c (cp_binding_oracle): New var.
>       (query_oracle): New fn.
>       (qualified_lookup_using_namespace): Call query_oracle.
>       (lookup_name_real_1): Likewise.
>       * parser.c (ansi_litopname): New fn.
>       * search.c (friend_accessible_p): Call is_global_friend.
>       * semantics.c (is_this_parameter): Accept a variable if the
>       binding oracle is enabled.

> for  include

>       Introduce C++ support in libcc1.
>       * gcc-c-fe.def (int_type_v0): Rename from...
>       (int_type): ... this.  Introduce new version.
>       (float_type_v0): Rename from...
>       (float_type): ... this.  Introduce new version.
>       (char_type): New.
>       * gcc-c-interface.h (gcc_c_api_version): Add GCC_C_FE_VERSION_1.
>       (gcc_type_array): Move...
>       * gcc-interface.h: ... here.
>       * gcc-cp-fe.def: New.
>       * gcc-cp-interface.h: New.

> for  libcc1

>       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.

-- 
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer

Reply via email to