68f4b57f51eb726b40c901c7f08e226bc4c20ecd
[libfirm] / ir / be / beuses.h
1 /**
2  * @file   beuse.h
3  * @date   27.06.2005
4  * @author Sebastian Hack, Matthias Braun
5  *
6  * Determine future usages of values.
7  *
8  * Copyright (C) 2005 Universitaet Karlsruhe
9  * Released under the GPL
10  */
11 #ifndef _BEUSES_H
12 #define _BEUSES_H
13
14 #include "bearch.h"
15 #include "belive.h"
16
17 typedef struct _be_next_use_t {
18         unsigned time;
19         int outermost_loop;
20 } be_next_use_t;
21
22 #define USES_INFINITY                 10000000
23
24 static INLINE int USES_IS_INFINITE(unsigned time)
25 {
26         return time >= USES_INFINITY;
27 }
28
29 typedef struct _be_uses_t be_uses_t;
30
31 be_next_use_t be_get_next_use(be_uses_t *uses, ir_node *from,
32                          unsigned from_step, const ir_node *def,
33                          int skip_from_uses);
34
35 be_uses_t *be_begin_uses(ir_graph *irg, const be_lv_t *lv);
36
37 void be_end_uses(be_uses_t *uses);
38
39 #endif /* _BEUSES_H */