GCC Middle and Back End API Reference
symtab.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "target.h"
#include "rtl.h"
#include "tree.h"
#include "gimple.h"
#include "timevar.h"
#include "cgraph.h"
#include "lto-streamer.h"
#include "print-tree.h"
#include "varasm.h"
#include "langhooks.h"
#include "output.h"
#include "ipa-utils.h"
#include "calls.h"
#include "stringpool.h"
#include "attribs.h"
#include "builtins.h"
#include "fold-const.h"
Include dependency graph for symtab.cc:

Macros

#define EXTRA   16
 

Functions

static tree ultimate_transparent_alias_target (tree alias)
 
static section_hash_entryretain_section_hash_entry (section_hash_entry *entry)
 
static void release_section_hash_entry (section_hash_entry *entry)
 
static bool check_ifunc_resolver (cgraph_node *node, void *data)
 
static bool is_caller_ifunc_resolver (cgraph_node *node)
 
static bool address_matters_1 (symtab_node *n, void *)
 
static bool increase_alignment_1 (symtab_node *n, void *v)
 
static bool get_alignment_1 (symtab_node *n, void *v)
 

Variables

static const char * ipa_ref_use_name [] = {"read","write","addr","alias"}
 
const char *const ld_plugin_symbol_resolution_names []
 
static const char *const symtab_type_names [] = {"symbol", "function", "variable"}
 
static bitmap ifunc_ref_map
 

Macro Definition Documentation

◆ EXTRA

#define EXTRA   16

Function Documentation

◆ address_matters_1()

static bool address_matters_1 ( symtab_node * n,
void *  )
static

◆ check_ifunc_resolver()

static bool check_ifunc_resolver ( cgraph_node * node,
void * data )
static
Return true and set *DATA to true if NODE is an ifunc resolver.   

References symtab_node::ifunc_resolver.

Referenced by symtab_node::check_ifunc_callee_symtab_nodes(), and is_caller_ifunc_resolver().

◆ get_alignment_1()

static bool get_alignment_1 ( symtab_node * n,
void * v )
static
Helper for symtab_node::definition_alignment.   

References symtab_node::decl, DECL_ALIGN, and MAX.

Referenced by symtab_node::definition_alignment().

◆ increase_alignment_1()

static bool increase_alignment_1 ( symtab_node * n,
void * v )
static
Worker for symtab_node::increase_alignment.   

References symtab_node::can_increase_alignment_p(), symtab_node::decl, DECL_ALIGN, DECL_USER_ALIGN, and SET_DECL_ALIGN.

Referenced by symtab_node::increase_alignment().

◆ is_caller_ifunc_resolver()

static bool is_caller_ifunc_resolver ( cgraph_node * node)
static

◆ release_section_hash_entry()

◆ retain_section_hash_entry()

static section_hash_entry * retain_section_hash_entry ( section_hash_entry * entry)
static
Bump the reference count on ENTRY so that it is retained.   

References section_hash_entry::ref_count.

Referenced by symtab_node::set_section_for_node(), and symtab_node::set_section_for_node().

◆ ultimate_transparent_alias_target()

static tree ultimate_transparent_alias_target ( tree alias)
inlinestatic
Follow the IDENTIFIER_TRANSPARENT_ALIAS chain starting at ALIAS
until we find an identifier that is not itself a transparent alias.   

References gcc_checking_assert, IDENTIFIER_TRANSPARENT_ALIAS, and TREE_CHAIN.

Referenced by symbol_table::change_decl_assembler_name(), and symtab_node::verify_base().

Variable Documentation

◆ ifunc_ref_map

◆ ipa_ref_use_name

const char* ipa_ref_use_name[] = {"read","write","addr","alias"}
static
Symbol table.
   Copyright (C) 2012-2024 Free Software Foundation, Inc.
   Contributed by Jan Hubicka

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

Referenced by symtab_node::dump_references(), and symtab_node::dump_referring().

◆ ld_plugin_symbol_resolution_names

const char* const ld_plugin_symbol_resolution_names[]
Initial value:
=
{
"",
"undef",
"prevailing_def",
"prevailing_def_ironly",
"preempted_reg",
"preempted_ir",
"resolved_ir",
"resolved_exec",
"resolved_dyn",
"prevailing_def_ironly_exp"
}

Referenced by symtab_node::dump_base().

◆ symtab_type_names

const char* const symtab_type_names[] = {"symbol", "function", "variable"}
static