X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=testprograms%2Fif_else_example.c;h=89ef83d7c89e4e06a0752f30c69e5bad54ece7fa;hb=5470b27c201e3fd91f5af86753dd55806277edcb;hp=113c485414d5995c9f30685b9a1c67d108b57aa6;hpb=4433514e4b01cb3c566d24d671e689f02682f59f;p=libfirm diff --git a/testprograms/if_else_example.c b/testprograms/if_else_example.c index 113c48541..89ef83d7c 100644 --- a/testprograms/if_else_example.c +++ b/testprograms/if_else_example.c @@ -7,7 +7,9 @@ */ # include +# include +# include "irvrfy.h" # include "firm.h" # include "irdump.h" @@ -32,11 +34,11 @@ int main(int argc, char **argv) { - ir_graph *irg; /* this variable contains the irgraph */ - type_class *owner; /* the class in which this method is defined */ - type_method *method; /* the type of this method */ - entity *ent; /* represents this method as entity of owner */ - ir_node *x, *x_then, *x_else, *c0, *c1, *c2, *cmpGt, *f, *t, *b; + ir_graph *irg; /* this variable contains the irgraph */ + type *owner; /* the class in which this method is defined */ + type *method; /* the type of this method */ + entity *ent; /* represents this method as entity of owner */ + ir_node *x, *x_then, *x_else, *c0, *c1, *c2, *cmpGt, *f, *t, *b; printf("\ncreating an IR graph: IF_ELSE_EXAMPLE...\n"); @@ -53,8 +55,8 @@ int main(int argc, char **argv) owner = get_glob_type(); method = new_type_method (id_from_str("main", 4), 0, 2); - ent = new_entity ((type *)owner, id_from_str (ENTITYNAME, - strlen(ENTITYNAME)), (type *)method); + ent = new_entity (owner, id_from_str (ENTITYNAME, + strlen(ENTITYNAME)), method); /* Generates the basic graph for the method represented by entity ent, that * is, generates start and end blocks and nodes and a first, initial block. @@ -81,24 +83,24 @@ int main(int argc, char **argv) f = new_Proj (x, mode_X, 0); /* if condition is false */ t = new_Proj (x, mode_X, 1); /* if condition is true */ - mature_block (irg->current_block); + mature_block (get_irg_current_block(irg)); /* generate and fill the then block */ - b = new_Block (); + b = new_immBlock (); add_in_edge (b, t); set_value (0, get_value(1, mode_i)); mature_block (b); x_then = new_Jmp (); /* generate and fill the else block */ - b = new_Block (); + b = new_immBlock (); add_in_edge (b, f); set_value (1, new_Const (mode_i, tarval_from_long (mode_i, 2))); mature_block (b); x_else = new_Jmp (); /* generate the join block and add all cfg edges */ - b = new_Block (); + b = new_immBlock (); add_in_edge (b, x_then); add_in_edge (b, x_else); @@ -111,20 +113,22 @@ int main(int argc, char **argv) } /* Now generate all instructions for this block and all its predecessor blocks so we can mature it. */ - mature_block (irg->current_block); + mature_block (get_irg_current_block(irg)); /* This adds the in edge of the end block which originates at the return statement. The return node passes control flow to the end block. */ - add_in_edge (irg->end_block, x); + add_in_edge (get_irg_end_block(irg), x); /* Now we can mature the end block as all it's predecessors are known. */ - mature_block (irg->end_block); + mature_block (get_irg_end_block(irg)); - printf("Optimizing ...\n"); + printf("\nOptimizing ...\n"); + local_optimize_graph(irg); dead_node_elimination(irg); /* verify the graph */ irg_vrfy(irg); + finalize_cons (irg); printf("Done building the graph. Dumping it.\n"); dump_ir_block_graph (irg);