summaryrefslogtreecommitdiffhomepage
path: root/ir/be/bespilldaemel.c
diff options
context:
space:
mode:
authorSebastian Buchwald <Sebastian.Buchwald@kit.edu>2013-09-04 08:42:29 +0200
committerSebastian Buchwald <Sebastian.Buchwald@kit.edu>2013-09-04 09:12:22 +0200
commitd90e2be82576530d77e18f347bb022567423a72e (patch)
treecd72732314ee2235efb6b8fc8c50e7ff2320da2a /ir/be/bespilldaemel.c
parentbea5d89871723fbb703942cd20f005728c35a9be (diff)
Avoid reload if the node is *kept* by a CopyKeep.
Diffstat (limited to 'ir/be/bespilldaemel.c')
-rw-r--r--ir/be/bespilldaemel.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ir/be/bespilldaemel.c b/ir/be/bespilldaemel.c
index 3d1e1c4..4b6e5d7 100644
--- a/ir/be/bespilldaemel.c
+++ b/ir/be/bespilldaemel.c
@@ -98,6 +98,10 @@ static void spill_node(ir_node *node)
if (be_is_Keep(use))
continue;
+ /* Ignore CopyKeeps, except for the operand to copy. */
+ if (be_is_CopyKeep(use) && get_edge_src_pos(edge) != n_be_CopyKeep_op)
+ continue;
+
if (is_Phi(use)) {
int in = get_edge_src_pos(edge);
ir_node *block = get_nodes_block(use);