From 8e25bafe932b090850854321b816685b2462c17e Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Sat, 2 May 2020 09:12:30 +0100 Subject: gdb: Convert language la_get_compile_instance field to a method This commit changes the language_data::la_get_compile_instance function pointer member variable into a member function of language_defn. Unlike previous commits converting fields of language_data to member function in language_defn, this field is NULL for some languages. As a result I had to change the API slightly so that the base language_defn class provides an implementation. There should be no user visible changes after this commit. gdb/ChangeLog: * ada-lang.c (ada_language_data): Delete la_get_compile_instance initializer. * c-lang.c (class compile_instance): Declare. (c_language_data): Delete la_get_compile_instance initializer. (c_language::get_compile_instance): New member function. (cplus_language_data): Delete la_get_compile_instance initializer. (cplus_language::get_compile_instance): New member function. (asm_language_data): Delete la_get_compile_instance initializer. (minimal_language_data): Likewise. * c-lang.h (c_get_compile_context): Update comment. (cplus_get_compile_context): Update comment. * compile/compile.c (compile_to_object): Update calls, don't rely on function pointer being NULL. * d-lang.c (d_language_data): Delete la_get_compile_instance initializer. * f-lang.c (f_language_data): Likewise. * go-lang.c (go_language_data): Likewise. * language.c (unknown_language_data): Likewise. (auto_language_data): Likewise. * language.h (language_data): Delete la_get_compile_instance field. (language_defn::get_compile_instance): New member function. * m2-lang.c (m2_language_data): Delete la_get_compile_instance initializer. * objc-lang.c (objc_language_data): Likewise. * opencl-lang.c (opencl_language_data): Likewise. * p-lang.c (pascal_language_data): Likewise. * rust-lang.c (rust_language_data): Likewise. --- gdb/compile/compile.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'gdb/compile/compile.c') diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c index 8d134d9..3a3afa8 100644 --- a/gdb/compile/compile.c +++ b/gdb/compile/compile.c @@ -691,13 +691,11 @@ compile_to_object (struct command_line *cmd, const char *cmd_string, expr_pc = get_frame_address_in_block (get_selected_frame (NULL)); /* Set up instance and context for the compiler. */ - if (current_language->la_get_compile_instance == NULL) + std::unique_ptr compiler + (current_language->get_compile_instance ()); + if (compiler == nullptr) error (_("No compiler support for language %s."), current_language->la_name); - - compile_instance *compiler_instance - = current_language->la_get_compile_instance (); - std::unique_ptr compiler (compiler_instance); compiler->set_print_callback (print_callback, NULL); compiler->set_scope (scope); compiler->set_block (expr_block); -- cgit v1.1