projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a676ad4
)
HACK: Prevent folding reload AM when the node already has a "real" memory input....
author
Christoph Mallon
<christoph.mallon@gmx.de>
Fri, 10 Oct 2008 16:09:46 +0000
(16:09 +0000)
committer
Christoph Mallon
<christoph.mallon@gmx.de>
Fri, 10 Oct 2008 16:09:46 +0000
(16:09 +0000)
[r22655]
ir/be/ia32/bearch_ia32.c
patch
|
blob
|
history
diff --git
a/ir/be/ia32/bearch_ia32.c
b/ir/be/ia32/bearch_ia32.c
index
6b25e85
..
1ca37fc
100644
(file)
--- a/
ir/be/ia32/bearch_ia32.c
+++ b/
ir/be/ia32/bearch_ia32.c
@@
-832,7
+832,9
@@
static int ia32_possible_memory_operand(const ir_node *irn, unsigned int i)
return 0;
case ia32_am_unary:
return 0;
case ia32_am_unary:
- return i == n_ia32_unary_op;
+ if (i != n_ia32_unary_op)
+ return 0;
+ break;
case ia32_am_binary:
switch (i) {
case ia32_am_binary:
switch (i) {
@@
-847,20
+849,27
@@
static int ia32_possible_memory_operand(const ir_node *irn, unsigned int i)
req = get_ia32_in_req(irn, n_ia32_binary_left);
if (req->type & arch_register_req_type_limited)
return 0;
req = get_ia32_in_req(irn, n_ia32_binary_left);
if (req->type & arch_register_req_type_limited)
return 0;
-
- return 1;
+ break;
}
case n_ia32_binary_right:
}
case n_ia32_binary_right:
-
return 1
;
+
break
;
default:
return 0;
}
default:
return 0;
}
+ break;
default:
panic("Unknown AM type");
}
default:
panic("Unknown AM type");
}
+
+ /* HACK: must not already use "real" memory.
+ * This can happen for Call and Div */
+ if (!is_NoMem(get_irn_n(irn, n_ia32_mem)))
+ return 0;
+
+ return 1;
}
static void ia32_perform_memory_operand(ir_node *irn, ir_node *spill,
}
static void ia32_perform_memory_operand(ir_node *irn, ir_node *spill,