GCC Middle and Back End API Reference
|
#include <vtable-verify.h>
Data Fields | |
tree | vtbl_map_decl |
tree | class_name |
struct vtv_graph_node * | class_info |
unsigned | uid |
struct vtbl_map_node * | next |
struct vtbl_map_node * | prev |
register_table_type | registered |
bool | is_used |
This is the node used for our hashtable of vtable map variable information. When we create a vtable map variable (var decl) we put it into one of these nodes; create a corresponding vtv_graph_node for our class hierarchy info and store that in this node; generate a unique (monotonically ascending) id for both the vtbl_map_node and the vtv_graph_node; and insert the node into two data structures (to make it easy to find in several different ways): 1). A hash table ("vtbl_map_hash" in vtable-verify.c). This gives us an easy way to check to see if we already have a node for the vtable map variable or not; and 2). An array (vector) of vtbl_map_nodes, where the array index corresponds to the unique id of the vtbl_map_node, which gives us an easy way to use bitmaps to represent and find the vtable map nodes.
struct vtv_graph_node* vtbl_map_node::class_info |
Referenced by find_or_create_vtbl_map_node().
tree vtbl_map_node::class_name |
Referenced by vtbl_map_hasher::equal(), find_or_create_vtbl_map_node(), vtbl_map_hasher::hash(), and vtbl_map_get_node().
bool vtbl_map_node::is_used |
Referenced by find_or_create_vtbl_map_node(), and verify_bb_vtables().
struct vtbl_map_node* vtbl_map_node::next |
struct vtbl_map_node * vtbl_map_node::prev |
register_table_type vtbl_map_node::registered |
Referenced by find_or_create_vtbl_map_node(), and vtbl_map_node_registration_insert().
unsigned vtbl_map_node::uid |
Referenced by find_or_create_vtbl_map_node().
tree vtbl_map_node::vtbl_map_decl |
Referenced by find_or_create_vtbl_map_node(), and verify_bb_vtables().