X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=testprograms%2Firr_loop_example.c;h=5faa736893e68ff279c165de6a4e13752c3dc5be;hb=a587dd2e23eafa549494155709fbd5f83afdf043;hp=15a2b4beb21f1ae413f5dd0594303f6b86b7f337;hpb=2cd57a8b25d2cf8c34a1ee05bc2198a57ffdc0fc;p=libfirm diff --git a/testprograms/irr_loop_example.c b/testprograms/irr_loop_example.c index 15a2b4beb..5faa73689 100644 --- a/testprograms/irr_loop_example.c +++ b/testprograms/irr_loop_example.c @@ -10,12 +10,10 @@ * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. */ -# include -# include +#include +#include -# include "irvrfy.h" -# include "irdump.h" -# include "firm.h" +#include /** * This file constructs a control flow of following shape: @@ -51,29 +49,28 @@ * **/ -int main(int argc, char **argv) +int main(void) { ir_graph *irg; /* this variable contains the irgraph */ - type *owner; /* the class in which this method is defined */ - type *proc_tp; /* typeinformation for the method main */ - entity *ent; /* represents this method as entity of owner */ + ir_type *owner; /* the class in which this method is defined */ + ir_type *proc_tp; /* typeinformation for the method main */ + ir_entity *ent; /* represents this method as ir_entity of owner */ ir_node *expr, *c1, *c2, *c3, *c4, *c5, *cond, *f, *t, *f2, *loopBlock1, *f_l1, *t_l1, *loopBlock2, *f_l2, *t_l2, *loopBlock3, *f_l3, *t_l3, *x; int i; /* init library */ - init_firm (NULL); - set_opt_constant_folding (0); /* so that the stupid tests are not optimized. */ + init_firm(NULL); + set_opt_constant_folding(0); /* so that the stupid tests are not optimized. */ set_opt_cse(1); - set_opt_dead_node_elimination(1); turn_off_edge_labels(); /* FIRM was designed for oo languages where all methods belong to a class. * For imperative languages like C we view a file as a large class containing * all functions as methods in this file. * Therefore we define a class "empty" according to the file name - * with a method main as an entity. + * with a method main as an ir_entity. */ #define CLASSNAME "IRR_LOOP" #define METHOD_TP_NAME "METH_TP_NOARG_NORES" @@ -81,7 +78,7 @@ int main(int argc, char **argv) #define NRES 0 #define NUM_OF_LOCAL_VARS 0 - owner = new_type_class (new_id_from_str (CLASSNAME)); + owner = new_type_class(new_id_from_str(CLASSNAME)); printf("\nCreating testprogram: %s...\n", CLASSNAME); proc_tp = new_type_method(new_id_from_str(METHOD_TP_NAME), NRARGS, NRES); @@ -89,33 +86,33 @@ int main(int argc, char **argv) #define METHODNAME "loop1" - ent = new_entity (owner, new_id_from_str (METHODNAME), proc_tp); + ent = new_entity(owner, new_id_from_str(METHODNAME), proc_tp); get_entity_ld_name(ent); /* To enforce name mangling for vcg graph name */ - irg = new_ir_graph (ent, NUM_OF_LOCAL_VARS); + irg = new_ir_graph(ent, NUM_OF_LOCAL_VARS); /* to make three conditionals */ - expr = new_Const (mode_Is, new_tarval_from_long (0, mode_Is)); - c1 = new_Const (mode_Is, new_tarval_from_long (1, mode_Is)); - c2 = new_Const (mode_Is, new_tarval_from_long (2, mode_Is)); - c3 = new_Const (mode_Is, new_tarval_from_long (2, mode_Is)); + expr = new_Const(mode_Is, new_tarval_from_long(0, mode_Is)); + c1 = new_Const(mode_Is, new_tarval_from_long(1, mode_Is)); + c2 = new_Const(mode_Is, new_tarval_from_long(2, mode_Is)); + c3 = new_Const(mode_Is, new_tarval_from_long(2, mode_Is)); cond = new_Cond(new_Proj(new_Cmp(expr, c1), mode_b, pn_Cmp_Eq)); - f = new_Proj(cond, mode_X, 0); - t = new_Proj(cond, mode_X, 1); + f = new_Proj(cond, mode_X, pn_Cond_false); + t = new_Proj(cond, mode_X, pn_Cond_true); mature_immBlock(get_irg_current_block(irg)); loopBlock1 = new_immBlock(); add_immBlock_pred(loopBlock1, t); cond = new_Cond(new_Proj(new_Cmp(expr, c2), mode_b, pn_Cmp_Eq)); - f_l1 = new_Proj(cond, mode_X, 0); - t_l1 = new_Proj(cond, mode_X, 1); + f_l1 = new_Proj(cond, mode_X, pn_Cond_false); + t_l1 = new_Proj(cond, mode_X, pn_Cond_true); loopBlock2 = new_immBlock(); add_immBlock_pred(loopBlock2, f); cond = new_Cond(new_Proj(new_Cmp(expr, c3), mode_b, pn_Cmp_Eq)); - f_l2 = new_Proj(cond, mode_X, 0); - t_l2 = new_Proj(cond, mode_X, 1); + f_l2 = new_Proj(cond, mode_X, pn_Cond_false); + t_l2 = new_Proj(cond, mode_X, pn_Cond_true); add_immBlock_pred(loopBlock1, t_l2); add_immBlock_pred(loopBlock2, t_l1); @@ -125,61 +122,61 @@ int main(int argc, char **argv) new_immBlock(); add_immBlock_pred(get_irg_current_block(irg), f_l2); add_immBlock_pred(get_irg_current_block(irg), f_l1); - x = new_Return (get_store(), 0, NULL); - mature_immBlock (get_irg_current_block(irg)); + x = new_Return(get_store(), 0, NULL); + mature_immBlock(get_irg_current_block(irg)); - add_immBlock_pred (get_irg_end_block(irg), x); - mature_immBlock (get_irg_end_block(irg)); + add_immBlock_pred(get_irg_end_block(irg), x); + mature_immBlock(get_irg_end_block(irg)); - irg_finalize_cons (irg); + irg_finalize_cons(irg); /* --- method loop2 ------------------------------------------------------ */ #undef METHODNAME #define METHODNAME "loop2" - ent = new_entity (owner, new_id_from_str (METHODNAME), proc_tp); + ent = new_entity(owner, new_id_from_str(METHODNAME), proc_tp); get_entity_ld_name(ent); /* To enforce name mangling for vcg graph name */ - irg = new_ir_graph (ent, NUM_OF_LOCAL_VARS); + irg = new_ir_graph(ent, NUM_OF_LOCAL_VARS); /* to make several conditionals */ - expr = new_Const (mode_Is, new_tarval_from_long (0, mode_Is)); - c1 = new_Const (mode_Is, new_tarval_from_long (1, mode_Is)); - c2 = new_Const (mode_Is, new_tarval_from_long (2, mode_Is)); - c3 = new_Const (mode_Is, new_tarval_from_long (3, mode_Is)); - c4 = new_Const (mode_Is, new_tarval_from_long (4, mode_Is)); - c5 = new_Const (mode_Is, new_tarval_from_long (5, mode_Is)); + expr = new_Const(mode_Is, new_tarval_from_long(0, mode_Is)); + c1 = new_Const(mode_Is, new_tarval_from_long(1, mode_Is)); + c2 = new_Const(mode_Is, new_tarval_from_long(2, mode_Is)); + c3 = new_Const(mode_Is, new_tarval_from_long(3, mode_Is)); + c4 = new_Const(mode_Is, new_tarval_from_long(4, mode_Is)); + c5 = new_Const(mode_Is, new_tarval_from_long(5, mode_Is)); cond = new_Cond(new_Proj(new_Cmp(expr, c1), mode_b, pn_Cmp_Eq)); - f2 = new_Proj(cond, mode_X, 0); - t = new_Proj(cond, mode_X, 1); + f2 = new_Proj(cond, mode_X, pn_Cond_false); + t = new_Proj(cond, mode_X, pn_Cond_true); mature_immBlock(get_irg_current_block(irg)); new_immBlock(); add_immBlock_pred(get_irg_current_block(irg), t); cond = new_Cond(new_Proj(new_Cmp(expr, c5), mode_b, pn_Cmp_Eq)); - f = new_Proj(cond, mode_X, 0); - t = new_Proj(cond, mode_X, 1); + f = new_Proj(cond, mode_X, pn_Cond_false); + t = new_Proj(cond, mode_X, pn_Cond_true); mature_immBlock(get_irg_current_block(irg)); loopBlock1 = new_immBlock(); add_immBlock_pred(loopBlock1, t); cond = new_Cond(new_Proj(new_Cmp(expr, c2), mode_b, pn_Cmp_Eq)); - f_l1 = new_Proj(cond, mode_X, 0); - t_l1 = new_Proj(cond, mode_X, 1); + f_l1 = new_Proj(cond, mode_X, pn_Cond_false); + t_l1 = new_Proj(cond, mode_X, pn_Cond_true); loopBlock2 = new_immBlock(); add_immBlock_pred(loopBlock2, f); cond = new_Cond(new_Proj(new_Cmp(expr, c3), mode_b, pn_Cmp_Eq)); - f_l2 = new_Proj(cond, mode_X, 0); - t_l2 = new_Proj(cond, mode_X, 1); + f_l2 = new_Proj(cond, mode_X, pn_Cond_false); + t_l2 = new_Proj(cond, mode_X, pn_Cond_true); loopBlock3 = new_immBlock(); add_immBlock_pred(loopBlock3, f2); cond = new_Cond(new_Proj(new_Cmp(expr, c4), mode_b, pn_Cmp_Eq)); - f_l3 = new_Proj(cond, mode_X, 0); - t_l3 = new_Proj(cond, mode_X, 1); + f_l3 = new_Proj(cond, mode_X, pn_Cond_false); + t_l3 = new_Proj(cond, mode_X, pn_Cond_true); add_immBlock_pred(loopBlock1, t_l2); add_immBlock_pred(loopBlock2, t_l1); @@ -192,18 +189,17 @@ int main(int argc, char **argv) new_immBlock(); add_immBlock_pred(get_irg_current_block(irg), f_l1); add_immBlock_pred(get_irg_current_block(irg), f_l3); - x = new_Return (get_store(), 0, NULL); - mature_immBlock (get_irg_current_block(irg)); + x = new_Return(get_store(), 0, NULL); + mature_immBlock(get_irg_current_block(irg)); - add_immBlock_pred (get_irg_end_block(irg), x); - mature_immBlock (get_irg_end_block(irg)); + add_immBlock_pred(get_irg_end_block(irg), x); + mature_immBlock(get_irg_end_block(irg)); - irg_finalize_cons (irg); + irg_finalize_cons(irg); /* --- more ... ------------------------------------------------------ */ printf("Optimizing ...\n"); - //dead_node_elimination(irg); for (i = 0; i < get_irp_n_irgs(); ++i) { current_ir_graph = get_irp_irg(i); @@ -215,13 +211,12 @@ int main(int argc, char **argv) printf("Dumping the graph and a control flow graph.\n"); dump_ir_block_graph(current_ir_graph, ""); dump_cfg(current_ir_graph, ""); - printf("Use xvcg to view these graphs:\n"); - printf("/ben/goetz/bin/xvcg GRAPHNAME\n\n"); - + printf("Use ycomp to view these graphs:\n"); + printf("ycomp GRAPHNAME\n\n"); } /* Error for loop2 */ compute_execution_frequency(get_irp_irg(0), 10, 0.001); dump_interval_graph(get_irp_irg(0), ""); - return (0); + return 0; }