================================ Checklist for GIMPLE assignments ================================= The assignments have been designed with specific learning objectives. The following self-assessment list should give you a fair idea of the extent to which you have learnt the expected material. Please try to respond to these statements after doing the assignments on GIMPLE. Your responses to the statements could be: `Yes', `No', or `Partly', or `I am not sure'. Please make sure that you move to an assignment only after getting mostly `Yes' on the checklist for the previous assignment. This is advisable even if this seems to slow down your progress because in general, an assignment assumes the knowledge gained from the previous assignment. In case you are unable to say `Yes' for many of the statements, we advise you to talk to a Teaching Assistant to clarify the concepts. If the need be, we will try to find someone to explain the concepts later in the evening. I know how to add a pass a. I know how to instantiate a data structure for adding a pass. (use of `struct gimple_opt_pass') b. I know how to include the pass as a dynamic plugin by i. specifying the positioning of the pass in `struct register_pass_info' ii. activating the plugin in function `plugin_init' Assignment 1 ------------ 1. I know how to iterate over the edges of a basic block using 'FOR_EACH_EDGE'. This assignment does not involve manipulating the control flow graph created by GCC, however, in the rest of the assignments we make changes in it. Assignment 2 ------------ 1. I can identify the types of GIMPLE statements based on the 'gimple_code' of the statement. 2. I can move the iterator forward using gsi_next() function and backward using gsi_prev() function to get the next and previous gimple statements, respectively. 3. I know how to split existing basic blocks of a control flow graph. Assignment 3 ------------ 1. I know how to identify assignment statements and how to extract operands on LHS and RHS using 'gimple_assign_lhs', 'gimple_assign_rhs1' and 'gimple_assign_rhs2'. 2. I know how to remove gimple statements using 'gsi_remove()' and 'release_defs()'.