projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
backend_marked was a buggy/wrong concept, removed it
[libfirm]
/
ir
/
ana
/
irloop.c
diff --git
a/ir/ana/irloop.c
b/ir/ana/irloop.c
index
f1774a4
..
1722d48
100644
(file)
--- a/
ir/ana/irloop.c
+++ b/
ir/ana/irloop.c
@@
-24,16
+24,10
@@
* @date 7.2002
* @version $Id: irloop_t.h 17143 2008-01-02 20:56:33Z beck $
*/
* @date 7.2002
* @version $Id: irloop_t.h 17143 2008-01-02 20:56:33Z beck $
*/
-#ifdef HAVE_CONFIG_H
# include "config.h"
# include "config.h"
-#endif
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
+#include <string.h>
+#include <stdlib.h>
#include "irloop_t.h"
#include "irprog_t.h"
#include "irloop_t.h"
#include "irprog_t.h"
@@
-45,19
+39,30
@@
void add_loop_son(ir_loop *loop, ir_loop *son) {
lson.son = son;
ARR_APP1(loop_element, loop->children, lson);
++loop->n_sons;
lson.son = son;
ARR_APP1(loop_element, loop->children, lson);
++loop->n_sons;
+ loop->flags |= loop_outer_loop;
}
void add_loop_node(ir_loop *loop, ir_node *n) {
loop_element ln;
ln.node = n;
assert(loop && loop->kind == k_ir_loop);
}
void add_loop_node(ir_loop *loop, ir_node *n) {
loop_element ln;
ln.node = n;
assert(loop && loop->kind == k_ir_loop);
- assert(get_kind(n) == k_ir_node || get_kind(n) == k_ir_graph); /* used in callgraph.c */
+ ARR_APP1(loop_element, loop->children, ln);
+ loop->n_nodes++;
+}
+
+void add_loop_irg(ir_loop *loop, ir_graph *irg) {
+ loop_element ln;
+ ln.irg = irg;
+ assert(loop && loop->kind == k_ir_loop);
ARR_APP1(loop_element, loop->children, ln);
loop->n_nodes++;
}
/**
* Mature all loops by removing the flexible arrays of a loop.
ARR_APP1(loop_element, loop->children, ln);
loop->n_nodes++;
}
/**
* Mature all loops by removing the flexible arrays of a loop.
+ *
+ * @param loop the loop to mature
+ * @param obst an obstack, where the new arrays are allocated on
*/
void mature_loops(ir_loop *loop, struct obstack *obst) {
loop_element *new_children = DUP_ARR_D(loop_element, obst, loop->children);
*/
void mature_loops(ir_loop *loop, struct obstack *obst) {
loop_element *new_children = DUP_ARR_D(loop_element, obst, loop->children);
@@
-111,7
+116,7
@@
ir_loop *get_loop_son(ir_loop *loop, int pos) {
}
/* Returns the number of nodes in the loop */
}
/* Returns the number of nodes in the loop */
-int get_loop_n_nodes(ir_loop *loop) {
+int get_loop_n_nodes(
const
ir_loop *loop) {
assert(loop); assert(loop->kind == k_ir_loop);
return loop->n_nodes;
}
assert(loop); assert(loop->kind == k_ir_loop);
return loop->n_nodes;
}
@@
-119,7
+124,7
@@
int get_loop_n_nodes(ir_loop *loop) {
/* Returns the pos'th ir_node-child *
* TODO: This method isn't very efficient ! *
* Returns NULL if there isn't a pos'th ir_node */
/* Returns the pos'th ir_node-child *
* TODO: This method isn't very efficient ! *
* Returns NULL if there isn't a pos'th ir_node */
-ir_node *get_loop_node(ir_loop *loop, int pos) {
+ir_node *get_loop_node(
const
ir_loop *loop, int pos) {
int child_nr, node_nr = -1;
assert(loop && loop->kind == k_ir_loop);
int child_nr, node_nr = -1;
assert(loop && loop->kind == k_ir_loop);
@@
-172,7
+177,6
@@
void set_irn_loop(ir_node *n, ir_loop *loop) {
n->loop = loop;
}
n->loop = loop;
}
-/* Uses temporary information to get the loop */
ir_loop *(get_irn_loop)(const ir_node *n) {
return _get_irn_loop(n);
}
ir_loop *(get_irn_loop)(const ir_node *n) {
return _get_irn_loop(n);
}
@@
-186,8
+190,6
@@
int get_loop_loop_nr(const ir_loop *loop) {
#endif
}
#endif
}
-/** A field to connect additional information to a loop. Only valid
- if libfirm_debug is set. */
void set_loop_link(ir_loop *loop, void *link) {
assert(loop && loop->kind == k_ir_loop);
loop->link = link;
void set_loop_link(ir_loop *loop, void *link) {
assert(loop && loop->kind == k_ir_loop);
loop->link = link;
@@
-207,7
+209,7
@@
void (set_irg_loop)(ir_graph *irg, ir_loop *loop) {
}
/* Returns the root loop info (if exists) for an irg. */
}
/* Returns the root loop info (if exists) for an irg. */
-ir_loop *(get_irg_loop)(ir_graph *irg) {
+ir_loop *(get_irg_loop)(
const
ir_graph *irg) {
return _get_irg_loop(irg);
}
return _get_irg_loop(irg);
}
@@
-218,8
+220,7
@@
ir_loop *(get_irg_loop)(ir_graph *irg) {
ir_loop *alloc_loop(ir_loop *father, struct obstack *obst) {
ir_loop *son;
ir_loop *alloc_loop(ir_loop *father, struct obstack *obst) {
ir_loop *son;
- son = obstack_alloc(obst, sizeof(*son));
- memset(son, 0, sizeof(*son));
+ son = OALLOCZ(obst, ir_loop);
son->kind = k_ir_loop;
son->children = NEW_ARR_F(loop_element, 0);
son->n_nodes = 0;
son->kind = k_ir_loop;
son->children = NEW_ARR_F(loop_element, 0);
son->n_nodes = 0;