projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- Changed keep logic: all nodes can be keeped yet, thi is necessary to fix fehler152
[libfirm]
/
ir
/
ir
/
irnode.c
diff --git
a/ir/ir/irnode.c
b/ir/ir/irnode.c
index
29d2c7d
..
b0d062f
100644
(file)
--- a/
ir/ir/irnode.c
+++ b/
ir/ir/irnode.c
@@
-138,7
+138,9
@@
new_ir_node(dbg_info *db, ir_graph *irg, ir_node *block, ir_op *op, ir_mode *mod
char *p;
int i;
char *p;
int i;
- assert(irg && op && mode);
+ assert(irg);
+ assert(op);
+ assert(mode);
p = obstack_alloc(irg->obst, node_size);
memset(p, 0, node_size);
res = (ir_node *)(p + firm_add_node_size);
p = obstack_alloc(irg->obst, node_size);
memset(p, 0, node_size);
res = (ir_node *)(p + firm_add_node_size);
@@
-900,8
+902,12
@@
ir_node *get_End_keepalive(const ir_node *end, int pos) {
}
void add_End_keepalive(ir_node *end, ir_node *ka) {
}
void add_End_keepalive(ir_node *end, ir_node *ka) {
+ ir_graph *irg = get_irn_irg(end);
assert(is_End(end));
assert(is_End(end));
- assert((is_Phi(ka) || is_Proj(ka) || is_Block(ka) || is_irn_keep(ka)) && "Only Phi, Block or Keep nodes can be kept alive!");
+
+ if (get_irg_phase_state(irg) == phase_building) {
+ assert((is_Phi(ka) || is_Block(ka) || is_irn_keep(ka)) && "Only Phi, Block or Keep nodes can be kept alive!");
+ }
add_irn_n(end, ka);
}
add_irn_n(end, ka);
}