projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make testcase return 0 in main
[libfirm]
/
ir
/
common
/
irtools.c
diff --git
a/ir/common/irtools.c
b/ir/common/irtools.c
index
d3e4c7f
..
dea407c
100644
(file)
--- a/
ir/common/irtools.c
+++ b/
ir/common/irtools.c
@@
-75,10
+75,10
@@
copy_irn_to_irg(ir_node *n, ir_graph *irg) {
else if (op == op_Proj) {
old_irg = get_irn_irg(n);
else if (op == op_Proj) {
old_irg = get_irn_irg(n);
- if (n == get_irg_frame(old_irg))
+ if (n == get_irg_initial_exec(old_irg))
+ nn = get_irg_initial_exec(irg);
+ else if (n == get_irg_frame(old_irg))
nn = get_irg_frame(irg);
nn = get_irg_frame(irg);
- else if (n == get_irg_globals(old_irg))
- nn = get_irg_globals(irg);
else if (n == get_irg_initial_mem(old_irg))
nn = get_irg_initial_mem(irg);
else if (n == get_irg_args(old_irg))
else if (n == get_irg_initial_mem(old_irg))
nn = get_irg_initial_mem(irg);
else if (n == get_irg_args(old_irg))
@@
-107,8
+107,12
@@
copy_irn_to_irg(ir_node *n, ir_graph *irg) {
set_irn_link(n, nn);
/* fix the irg for blocks */
set_irn_link(n, nn);
/* fix the irg for blocks */
- if (is_Block(nn))
+ if (is_Block(nn))
{
nn->attr.block.irg = irg;
nn->attr.block.irg = irg;
+
+ /* we cannot allow blocks WITHOUT macroblock input */
+ set_Block_MacroBlock(nn, get_Block_MacroBlock(n));
+ }
}
/*
}
/*
@@
-120,7
+124,7
@@
ir_node *exact_copy(const ir_node *n) {
ir_node *res, *block = NULL;
if (is_no_Block(n))
ir_node *res, *block = NULL;
if (is_no_Block(n))
- block = get_
irn_n(n, -1
);
+ block = get_
nodes_block(n
);
res = new_ir_node(get_irn_dbg_info(n),
irg,
res = new_ir_node(get_irn_dbg_info(n),
irg,
@@
-136,9
+140,16
@@
ir_node *exact_copy(const ir_node *n) {
frees e.g. the memory of the graph_arr allocated in new_immBlock. */
copy_node_attr(n, res);
new_backedge_info(res);
frees e.g. the memory of the graph_arr allocated in new_immBlock. */
copy_node_attr(n, res);
new_backedge_info(res);
+
+ if (is_Block(n)) {
+ set_Block_MacroBlock(res, get_Block_MacroBlock(n));
+ }
return res;
}
return res;
}
+/*
+ * Dump a pset containing Firm objects.
+ */
void firm_pset_dump(pset *set) {
void *obj;
void firm_pset_dump(pset *set) {
void *obj;