GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
class | nested_function_info |
Functions | |
tree | build_addr (tree) |
void | insert_field_into_struct (tree, tree) |
void | lower_nested_functions (tree) |
void | maybe_record_nested_function (cgraph_node *node) |
void | unnest_function (cgraph_node *node) |
cgraph_node * | first_nested_function (cgraph_node *node) |
cgraph_node * | next_nested_function (cgraph_node *node) |
cgraph_node * | nested_function_origin (cgraph_node *node) |
Header file for Nested function decomposition for GIMPLE. Copyright (C) 2013-2025 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
Take the address of EXP to be used within function CONTEXT. Mark it for addressability as necessary.
References build_fold_addr_expr, exp(), and mark_addressable().
Referenced by build_init_call_stmt(), convert_nl_goto_reference(), convert_tramp_reference_op(), create_call_for_reduction_1(), finalize_nesting_tree_1(), get_static_chain(), gimple_gen_ic_func_profiler(), gimple_gen_interval_profiler(), gimple_ic(), instrument_decisions(), lower_builtin_setjmp(), and take_address_of().
|
inline |
If there are functions nested in NODE, return first one.
References nested_function_info::get(), nested_function_info::nested, and NULL.
Referenced by cgraph_node::analyze(), check_for_nested_with_variably_modified(), create_nesting_tree(), gimplify_all_functions(), lower_nested_functions(), omp_discover_implicit_declare_target(), unshare_body(), and unvisit_body().
Insert FIELD into TYPE, sorted by alignment requirements.
References DECL_ALIGN, DECL_CHAIN, DECL_CONTEXT, SET_TYPE_ALIGN, TYPE_ALIGN, and TYPE_FIELDS.
Referenced by add_field_for_name(), add_field_for_reduction(), create_field_for_decl(), get_chain_field(), get_nl_goto_field(), install_var_field(), install_var_field(), lookup_field_for_decl(), ompdevlow_adjust_simt_enter(), and scan_sharing_clauses().
|
extern |
Main entry point for this pass. Process FNDECL and all of its nested subroutines and turn them into something less tightly bound.
References bitmap_obstack_initialize(), bitmap_obstack_release(), convert_all_function_calls(), convert_local_reference_op(), convert_local_reference_stmt(), convert_nl_goto_receiver(), convert_nl_goto_reference(), convert_nonlocal_reference_op(), convert_nonlocal_reference_stmt(), create_nesting_tree(), lang_hooks::decl_printable_name, dump_begin(), dump_end(), dump_file, dump_flags, finalize_nesting_tree(), first_nested_function(), free_nesting_tree(), cgraph_node::get(), gimplify_all_functions(), nesting_info_bitmap_obstack, NULL, set_dump_file(), TDI_nested, unnest_nesting_tree(), and walk_all_functions().
Referenced by cgraph_node::analyze().
|
extern |
If NODE is nested function, record it.
References CONSTRUCTION, symtab_node::decl, DECL_CONTEXT, cgraph_node::get_create(), nested_function_info::get_create(), nested_function_info::nested, nested_function_info::next_nested, nested_function_info::origin, symtab, and TREE_CODE.
Referenced by cgraph_node::create().
|
inline |
Return origin of nested function (and NULL otherwise).
References nested_function_info::get(), NULL, and nested_function_info::origin.
Referenced by cgraph_node::dump(), and unnest_function().
|
inline |
Return next nested function (used to iterate from first_nested_function).
References nested_function_info::get(), and nested_function_info::next_nested.
Referenced by check_for_nested_with_variably_modified(), create_nesting_tree(), gimplify_all_functions(), omp_discover_implicit_declare_target(), unshare_body(), unvisit_body(), and cgraph_node::verify_node().
|
extern |
cgraph_node is no longer nested function; update cgraph accordingly.
References gcc_checking_assert, nested_function_info::get(), nested_function_info::nested, nested_function_origin(), nested_function_sum, nested_function_info::next_nested, NULL, and nested_function_info::origin.
Referenced by unnest_nesting_tree_1().