projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
changing is not creating ;-)
[libfirm]
/
testprograms
/
endless_loop.c
diff --git
a/testprograms/endless_loop.c
b/testprograms/endless_loop.c
index
eb7e380
..
0c9c7f8
100644
(file)
--- a/
testprograms/endless_loop.c
+++ b/
testprograms/endless_loop.c
@@
-1,35
+1,42
@@
-/* (C) 2002 by Universitaet Karlsruhe
-** All rights reserved.
-**
-** Authors: Goetz Lindenmaier
-**
-** testprogram.
-*/
+/*
+ * Project: libFIRM
+ * File name: testprograms/endless_loop.c
+ * Purpose: Representation of an endless loop.
+ * Author: Goetz Lindenmaier
+ * Modified by:
+ * Created:
+ * CVS-ID: $Id$
+ * Copyright: (c) 1999-2003 Universität Karlsruhe
+ * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
+ */
-/* $ID$ */
+
+# include <stdio.h>
+# include <string.h>
+
+# include "irvrfy.h"
# include "irdump.h"
# include "firm.h"
# include "irdump.h"
# include "firm.h"
-# include "irnode.h"
/**
/**
-*
**
This file constructs the ir for the following pseudo-program:
-*
**
-*
**
VAR_A is some extern variable.
-*
**
-*
**
main(int a) { // pos 0
-*
**
int b = 1; // pos 1
-*
**
int h; // pos 2
-*
**
-*
**
while (0 == 0) loop {
-*
**
h = a;
-*
**
a = b;
-*
**
b = h;
-*
**
VAR_A = b;
-*
**
}
-*
**
-*
**
return a-b;
-*
**
}
+* This file constructs the ir for the following pseudo-program:
+*
+* VAR_A is some extern variable.
+*
+* main(int a) { // pos 0
+* int b = 1; // pos 1
+* int h; // pos 2
+*
+* while (0 == 0) loop {
+* h = a;
+* a = b;
+* b = h;
+* VAR_A = b;
+* }
+*
+* return a-b;
+* }
**/
int
**/
int
@@
-44,15
+51,15
@@
main(void)
printf("\nCreating an IR graph: ENDLESS_LOOP_EXAMPLE...\n");
printf("\nCreating an IR graph: ENDLESS_LOOP_EXAMPLE...\n");
- init_firm ();
+ init_firm (
NULL
);
set_optimize(1);
set_opt_constant_folding(1);
set_opt_cse(1);
set_optimize(1);
set_opt_constant_folding(1);
set_opt_cse(1);
- set_opt_global_cse(
1
);
+ set_opt_global_cse(
0
);
set_opt_dead_node_elimination (1);
set_opt_dead_node_elimination (1);
- prim_t_int = new_type_primitive(id_from_str ("int", 3), mode_
i
);
+ prim_t_int = new_type_primitive(id_from_str ("int", 3), mode_
Is
);
#define METHODNAME "main_tp"
#define NRARGS 1
#define METHODNAME "main_tp"
#define NRARGS 1
@@
-71,8
+78,8
@@
main(void)
irg = new_ir_graph (ent, 4);
/* Generate two values */
irg = new_ir_graph (ent, 4);
/* Generate two values */
- set_value (0, new_Proj(get_irg_args(irg), mode_
i
, 0));
- set_value (1, new_Const (mode_
i, tarval_from_long (mode_i, 1
)));
+ set_value (0, new_Proj(get_irg_args(irg), mode_
Is
, 0));
+ set_value (1, new_Const (mode_
Is, new_tarval_from_long (1, mode_Is
)));
x = new_Jmp();
mature_block (get_irg_current_block(irg));
x = new_Jmp();
mature_block (get_irg_current_block(irg));
@@
-80,8
+87,8
@@
main(void)
/* generate a block for the loop header and the conditional branch */
r = new_immBlock ();
add_in_edge (r, x);
/* generate a block for the loop header and the conditional branch */
r = new_immBlock ();
add_in_edge (r, x);
- x = new_Cond (new_Proj(new_Cmp(new_Const (mode_
i, tarval_from_long (mode_i, 0
)),
- new_Const (mode_
i, tarval_from_long (mode_i, 0
))),
+ x = new_Cond (new_Proj(new_Cmp(new_Const (mode_
Is, new_tarval_from_long (0, mode_Is
)),
+ new_Const (mode_
Is, new_tarval_from_long (0, mode_Is
))),
mode_b, Eq));
f = new_Proj (x, mode_X, 0);
t = new_Proj (x, mode_X, 1);
mode_b, Eq));
f = new_Proj (x, mode_X, 0);
t = new_Proj (x, mode_X, 1);
@@
-95,14
+102,17
@@
main(void)
/* The code in the loop body,
as we are dealing with local variables only the dataflow edges
are manipulated. */
/* The code in the loop body,
as we are dealing with local variables only the dataflow edges
are manipulated. */
- set_value (2, get_value (0, mode_
i
));
- set_value (0, get_value (1, mode_
i
));
- set_value (1, get_value (2, mode_
i
));
+ set_value (2, get_value (0, mode_
Is
));
+ set_value (0, get_value (1, mode_
Is
));
+ set_value (1, get_value (2, mode_
Is
));
/* set VAR_A to constant value */
set_store (new_Proj (new_Store (get_store (),
/* set VAR_A to constant value */
set_store (new_Proj (new_Store (get_store (),
- new_Const (mode_p, tarval_p_from_str ("VAR_A")),
- get_value(1, mode_i)),
+ new_simpleSel(
+ get_store(),
+ get_irg_globals(irg),
+ new_entity(get_glob_type(),id_from_str("VAR_A",6),prim_t_int)),
+ get_value(1, mode_Is)),
mode_M, 0));
mature_block (b);
mode_M, 0));
mature_block (b);
@@
-115,7
+125,7
@@
main(void)
{
ir_node *in[1];
{
ir_node *in[1];
- in[0] = new_Sub (get_value (0, mode_
i), get_value (1, mode_i), mode_i
);
+ in[0] = new_Sub (get_value (0, mode_
Is), get_value (1, mode_Is), mode_Is
);
x = new_Return (get_store (), 1, in);
}
x = new_Return (get_store (), 1, in);
}
@@
-137,7
+147,7
@@
main(void)
/* output the vcg file */
printf("Done building the graph. Dumping it.\n");
//turn_of_edge_labels();
/* output the vcg file */
printf("Done building the graph. Dumping it.\n");
//turn_of_edge_labels();
- dump_keepalive_edges();
+ dump_keepalive_edges(
true
);
dump_all_types();
dump_ir_block_graph (irg);
printf("Use xvcg to view this graph:\n");
dump_all_types();
dump_ir_block_graph (irg);
printf("Use xvcg to view this graph:\n");