X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=testprograms%2Fif_else_example.c;h=89ef83d7c89e4e06a0752f30c69e5bad54ece7fa;hb=5470b27c201e3fd91f5af86753dd55806277edcb;hp=01fe88582a607dedc037ca9c1e87b799f534be9a;hpb=2fa17934abe60b32409bf3b797ec3aa675a1b1a0;p=libfirm diff --git a/testprograms/if_else_example.c b/testprograms/if_else_example.c index 01fe88582..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,13 +34,13 @@ 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("creating an IR graph: IF_ELSE_EXAMPLE...\n"); + printf("\ncreating an IR graph: IF_ELSE_EXAMPLE...\n"); /* init library */ init_firm (); @@ -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); @@ -108,31 +110,30 @@ int main(int argc, char **argv) in[0] = get_value(0, mode_i); in[1] = get_value(1, mode_i); x = new_Return (get_store(), 2, in); - DDMSG; } /* 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)); - DDMSG; /* 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("\nDone building the graph. Dumping it.\n"); + printf("\nOptimizing ...\n"); + local_optimize_graph(irg); + dead_node_elimination(irg); /* verify the graph */ irg_vrfy(irg); + finalize_cons (irg); - dead_node_elimination(irg); - + printf("Done building the graph. Dumping it.\n"); dump_ir_block_graph (irg); - printf("use xvcg to view this graph:\n"); - printf("/ben/goetz/bin/xvcg GRAPHNAME\n"); + printf("/ben/goetz/bin/xvcg GRAPHNAME\n\n"); return (0); }