Each node holds a pointer to the corresponding node, and also has some locally stored information which has been copied from the node.
|
Public Member Functions |
| | CCDGNodeList () |
| | Constructor.
|
| | CCDGNodeList (CCDGNode *node, TRUTH_VALUE_TYPE tv, int trunc=0) |
| | Constructor which specifies node, execution condition and truncation.
|
| | CCDGNodeList (char *name, NODE_TYPE type, TRUTH_VALUE_TYPE tv) |
| | Constructor which specifies node name and type, but leaves node pointer null.
|
| | CCDGNodeList (CCDGNodeList *orig) |
| | Copy constructor.
|
| CCDGNodeList * | Copy_Subgraph () |
| | Create a copy of the subgraph rooted by this node.
|
| CCDGNodeList * | Add_Node (CCDGNode *p, TRUTH_VALUE_TYPE tv, int trunc=0) |
| | Append a node p to the end of this list.
|
| CCDGNodeList * | Add_Node (char *name, NODE_TYPE type, TRUTH_VALUE_TYPE tv) |
| CCDGNodeList * | Add_Node (char *start, bool before) |
| CCDGNodeList * | Add_NodeList (CCDGNodeList *nl) |
| CCDGNodeList * | Insert_Node (CCDGNode *new_node, CCDGNode *ref, bool before, TRUTH_VALUE_TYPE tv=TV_ANY) |
| CCDGNodeList * | Advance_To_Next_Guest (CGuestInfo *cur_gst, GUEST_STATE_TYPE &which_guest, CCDGNode **nxt_gst_node, bool skip_all_preds, bool skip_ABL_pred) |
| void | Set_Prev (CCDGNodeList *prev) |
| CCDGNodeList * | Get_Prev () |
| CCDGNode * | Get_Node () |
| void | Set_Node (CCDGNode *node) |
| char * | Get_Name () |
| CCDGNodeList * | Get_Last () |
| NODE_TYPE | Get_Type () |
| TRUTH_VALUE_TYPE | Get_TV () |
| void | Append_Suffix_To_Names (char *str) |
| | Append the suffix str to the name of each basic block in this list.
|
| void | Set_Trunc (int trunc) |
| int | Get_Trunc () |
| CInstr * | MakeNormOp (int instrclass, long best, long worst, char *oper1=NULL, char *oper2=NULL, char *oper3=NULL) |
| | Used in the parser to build a CInstr object.
|
| CCDGNodeList * | Remove_Node (int number) |
| CCDGNodeList * | Remove_Node (CCDGNode *p) |
| bool | Already_Contains (CCDGNode *node) |
| CCDGNode * | Find_Node (const char *name, NODE_TYPE type, bool dir_forward=true) |
| CCDGNode * | Find_Nodes_Branching_Here (char *name, CCDGNodeList **nodelist, bool find_all) |
| CCDGNode * | Find_Nodes_Branching_Here (CCDGNode *node, CCDGNodeList **nodelist, bool find_all) |
| int | Num_Nodes_Branching_Here (char *name) |
| int | Num_Nodes_Branching_Here (CCDGNode *node) |
| CCDGNode * | Process_Multiple_Merge_Points (CCDGNode *node) |
| CCDGNode * | Find_Node_Before_Inc (const char *name, NODE_TYPE type, CCDGNodeList *end_lp) |
| CCDGNode * | Find_Node_Skipping_Here (void) |
| void | Extract_Dirs (char *asm_filename) |
| void | Label_Nodes () |
| void | Find_Vars () |
| void | Virtualize_Registers () |
| void | Gen_Jitter_Plots (char *base_filename) |
| void | Gen_Graphs () |
| void | Plot_Segments (char *base_filename) |
| void | Gen_GnuPlot_Driver (char *orig_filename, PLOT_TYPE plot) |
| void | Gen_Code (char *orig_filename) |
| bool | Verify_Jumps_Can_Be_Ignored (CCDGNode *ret_node) |
| CCDGNodeList * | Build_CDGs_From_Flat_Code () |
| | This function builds the Control Flow Graph of the code which has been stored in the CCode/CCDGNodeList.
|
| void | Build_CFGs_From_Flat_Code () |
| | this function builds the CFGs from the CCode list
|
| void | Add_Exit (CCDGNodeList *exit) |
| CCDGNodeList * | Build_CDGs_via_CFGs () __attribute__((deprecated)) |
| CCDGNode * | Find_Common_Ancestor () |
| void | Do_STA (bool include_guest=TRUE) |
| void | Find_Segments (long max_jitter) |
| void | Pad_Jitter (bool pad_host, bool pad_guest) |
| void | Find_Blocking_IO_Loops () |
| void | Pad_Leaving_Loop_Intact (long cocall_period, bool look_for_unique_loop, char *loop_name_passed) |
| void | Prepare_Pad_And_Transform_Loop (CCDGNode *cur_node, long cocall_period, CPred *final_pred, bool loop_specific_code) |
| void | Reallocate_Regs (REALLOC_TYPE realloc_method) |
| void | Convert_PC_Relative_Branches () |
| void | Convert_Local_Labels_And_Branches () |
| CCDGNodeList * | Guard (int reg, int bit, bool exec_condition) |
| CCDGNodeList * | New_Guard (int reg, int bit, bool exec_condition) |
| CCDGNodeList * | Add_NodeList (char *start, bool before) |
| void | Pr_Info () |
| void | Pr_Name () |
| void | Pr_Type () |
| void | Output_Debug () |
| void | Output_Debug_Names () |
| void | Print_Directives () |
| void | Set_Visited (bool v) |
| long | Count_Instrs () |
| CCDGNodeList * | Build_CDGs_via_CFGs (char *filename) |
| | Constructs a CDG by first building a CFG.
|
| CCDGNode * | Get_Node_With_Label (char *label) |
| void | Handle_Start () |
| | Performs the necessary steps to include the start node in the CFG.
|
| void | Handle_Default () |
| void | Set_Parent (CFG_Node *p_parent) |
| CFG_Node * | Get_Parent () |
| CFG_Node * | Build_CFG_Node_Tree (int *n, CFG_Node *parent, CFG_Node *prev) |
| | Performs the first step in the construction of the CDGs.
|
| void | Set_Name (char *p_name) |
| | Set the name of this node to p_name, unless it's a null pointer or too long.
|
| void | Fix_Call_Nodes () |
| void | Fix_Branch_Targets () |
| void | Fix_Short_Branches () |
| void | Open_CFG_VCG_File (char *CFG_VCG_filename) |
| void | Add_To_CFG_VCG_File (char *CFG_VCG_filename) |
| void | Close_CFG_VCG_File (char *CFG_VCG_filename) |
| void | Build_CFG_VCG_File (int i, char *CFG_VCG_filename) |
| void | Build_CFG_VCG_File (int i, bool f, char *CFG_VCG_filename) |
| | Counts the number of nodes written to the VCG file when generating the graphical representation of the CFG.
|
| void | Build_CFG_VCG (int i) |
| void | Build_CFG_VCG (int i, bool f) |
| CCDGNodeList * | Build_CDGs_for_Proc (CCDGNodeList *proc, CCDGNodeList *recent_nodes_end, CCDGNodeList *exit) |
| CCDGNodeList * | Build_CFGs_and_CDGs (CCDGNodeList *recent_procs, char *source_filename) |
| | This method builds CFGs and then CDGs out of the nodes contained in this list.
|
| CCDGNodeList * | Add_Exit_Node () |
| | Adds a CCode node to the CCode list to include the exit block.
|
| char * | Get_Function_Name () |
| CCDGNodeList * | Compute_Code_End (bool begin) |
| void | Fix_Infinite_Blocks (CCDGNodeList *start, CCDGNodeList *exit) |
| Infinite_Nodes * | Get_Infinite_Nodes () |
| void | Reset_Infinite_Nodes () |
| void | Embed_CSource () |
|
| void | Set_Next (CCDGNodeList *next) |
| | Adds a node after this node.
|
| CCDGNodeList * | Get_Next () |
| | Gets the next CCDGNodeList in this list.
|
|
| void | Handle_Ctrans () |
| | CFG to CDG functions called to handle the steps for Uncondtional transfers, Skip instructions, Subroutine calls, Subroutine returns and Conditional transfers.
|
| void | Handle_Utrans () |
| | CFG to CDG functions called to handle the steps for Uncondtional transfers, Skip instructions, Subroutine calls, Subroutine returns and Conditional transfers.
|
| void | Handle_Skip () |
| | CFG to CDG functions called to handle the steps for Uncondtional transfers, Skip instructions, Subroutine calls, Subroutine returns and Conditional transfers.
|
| void | Handle_Utrans_Routine () |
| | CFG to CDG functions called to handle the steps for Uncondtional transfers, Skip instructions, Subroutine calls, Subroutine returns and Conditional transfers.
|
| CCDGNodeList * | Handle_Utrans_Return () |
| | CFG to CDG functions called to handle the steps for Uncondtional transfers, Skip instructions, Subroutine calls, Subroutine returns and Conditional transfers.
|
Private Attributes |
| CCDGNode * | Node |
| | Pointer to the CCDGNode which this refers to.
|
| char | Name [STR_SIZE] |
| | Copy of Node's name.
|
| NODE_TYPE | Type |
| | What type Node is: CPred, CCode, etc.
|
| CCDGNodeList * | Next |
| | Pointers for doubly-linked list.
|
| CCDGNodeList * | Prev |
| | Pointers for doubly-linked list.
|
| TRUTH_VALUE_TYPE | TV |
| | Truth value (predicate) under which Node executes.
|
| int | Trunc |
| | Can't recall.
|
| CFG_Node * | Parent |
| | Parent node, used during CFG formation but not afterwards.
|