summaryrefslogtreecommitdiffhomepage
path: root/ir/be/bespillslots.c
diff options
context:
space:
mode:
authorTobias Rapp <tobias.rapp@student.kit.edu>2014-03-19 13:25:59 +0100
committerTobias Rapp <tobias.rapp@student.kit.edu>2014-03-19 13:25:59 +0100
commit5dc60cbda3669fead625c3edafefee7cecfbf1ee (patch)
tree6f38950fe37e334061c9b6d65c0f17739c9ff152 /ir/be/bespillslots.c
parentc7f82c6cac13480b5b55712a4c84426400f5b3a0 (diff)
try to protect users from adding spills/stores to the frame entity coalescer (only loads may be added)
Diffstat (limited to 'ir/be/bespillslots.c')
-rw-r--r--ir/be/bespillslots.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/ir/be/bespillslots.c b/ir/be/bespillslots.c
index 8f85d09..c1423b6 100644
--- a/ir/be/bespillslots.c
+++ b/ir/be/bespillslots.c
@@ -157,6 +157,11 @@ void be_node_needs_frame_entity(be_fec_env_t *env, ir_node *node,
ir_node *spillnode = get_memory_edge(node);
assert(spillnode != NULL);
+ /* if the node only produces memory outputs, then it is probably a Spill node which should not
+ * be marked (only the reload nodes should be marked)! */
+ assert(arch_get_irn_n_outs(node) != 1
+ || arch_get_irn_register_req_out(node, 0)->type != arch_register_req_type_none);
+
/* walk upwards and collect all phis and spills on this way */
collect_spill(env, spillnode, mode, align);