projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactored nodes interface, completed set/get attr methods
[libfirm]
/
ir
/
be
/
besched_t.h
diff --git
a/ir/be/besched_t.h
b/ir/be/besched_t.h
index
f5a2e18
..
0d37f86
100644
(file)
--- a/
ir/be/besched_t.h
+++ b/
ir/be/besched_t.h
@@
-8,6
+8,7
@@
#include "irnode_t.h"
#include "irgraph_t.h"
#include "irnode_t.h"
#include "irgraph_t.h"
+#include "beutil.h"
#include "besched.h"
typedef unsigned int sched_timestep_t;
#include "besched.h"
typedef unsigned int sched_timestep_t;
@@
-54,15
+55,10
@@
static INLINE int _sched_get_time_step(const ir_node *irn)
*/
static INLINE int to_appear_in_schedule(ir_node *irn)
{
*/
static INLINE int to_appear_in_schedule(ir_node *irn)
{
- int i, n;
+ if(get_irn_opcode(irn) == iro_Start)
+ return 1;
- for(i = 0, n = get_irn_arity(irn); i < n; ++i) {
- ir_node *op = get_irn_n(irn, i);
- if(mode_is_datab(get_irn_mode(op)))
- return 1;
- }
-
- return mode_is_datab(get_irn_mode(irn));
+ return is_data_node(irn);
}
/**
}
/**
@@
-179,10
+175,10
@@
static INLINE void _sched_set_time_stamp(ir_node *irn)
*/
static INLINE ir_node *_sched_add_before(ir_node *before, ir_node *irn)
{
*/
static INLINE ir_node *_sched_add_before(ir_node *before, ir_node *irn)
{
- sched_info_t *info = get_irn_sched_info(irn);
+
sched_info_t *info = get_irn_sched_info(irn);
list_add_tail(&info->list, &get_irn_sched_info(before)->list);
list_add_tail(&info->list, &get_irn_sched_info(before)->list);
- _sched_set_time_stamp(irn);
- info->scheduled = 1;
+
_sched_set_time_stamp(irn);
+
info->scheduled = 1;
return irn;
}
return irn;
}
@@
-194,10
+190,10
@@
static INLINE ir_node *_sched_add_before(ir_node *before, ir_node *irn)
*/
static INLINE ir_node *_sched_add_after(ir_node *after, ir_node *irn)
{
*/
static INLINE ir_node *_sched_add_after(ir_node *after, ir_node *irn)
{
- sched_info_t *info = get_irn_sched_info(irn);
+
sched_info_t *info = get_irn_sched_info(irn);
list_add(&info->list, &get_irn_sched_info(after)->list);
list_add(&info->list, &get_irn_sched_info(after)->list);
- _sched_set_time_stamp(irn);
- info->scheduled = 1;
+
_sched_set_time_stamp(irn);
+
info->scheduled = 1;
return irn;
}
return irn;
}
@@
-209,11
+205,12
@@
static INLINE void _sched_remove(ir_node *irn)
{
sched_info_t *info = get_irn_sched_info(irn);
list_del(&info->list);
{
sched_info_t *info = get_irn_sched_info(irn);
list_del(&info->list);
+ INIT_LIST_HEAD(&info->list);
info->scheduled = 0;
}
/**
info->scheduled = 0;
}
/**
- * Check, if thenode is scheduled.
+ * Check, if the
node is scheduled.
* @param irn The node.
* @return 1, if the node is scheduled, 0 if not.
*/
* @param irn The node.
* @return 1, if the node is scheduled, 0 if not.
*/
@@
-255,10
+252,14
@@
extern int sched_verify_irg(ir_graph *irg);
* A predicate for a node.
* @param irn The node.
* @param data The custom data.
* A predicate for a node.
* @param irn The node.
* @param data The custom data.
- * @return 1
or 0, depending on your criteria
.
+ * @return 1
if irn should be skipped. Else 0
.
*/
typedef int (sched_predicator_t)(const ir_node *irn, void *data);
*/
typedef int (sched_predicator_t)(const ir_node *irn, void *data);
+
+int sched_skip_cf_predicator(const ir_node *irn, void *data);
+int sched_skip_phi_predicator(const ir_node *irn, void *data);
+
/**
* Skip nodes in a schedule.
* @param from The node to start from.
/**
* Skip nodes in a schedule.
* @param from The node to start from.