summaryrefslogtreecommitdiffhomepage
path: root/ir/be
diff options
context:
space:
mode:
authorChristoph Mallon <christoph.mallon@gmx.de>2019-03-30 14:50:29 +0100
committerChristoph Mallon <christoph.mallon@gmx.de>2019-04-05 20:44:54 +0200
commit60d0bc93afef8023bf7a940a85c94724490becd1 (patch)
tree1892bf34f7c9c65b63027c0417a42f803974bd02 /ir/be
parent8661e326d4f90dc9749f8df60184f03ad029fba8 (diff)
be, ir: Give be_Asm and ASM a fallthrough exec output.
Diffstat (limited to 'ir/be')
-rw-r--r--ir/be/beasm.c5
-rw-r--r--ir/be/benode.h1
2 files changed, 4 insertions, 2 deletions
diff --git a/ir/be/beasm.c b/ir/be/beasm.c
index 6798a1e..1ea9ffe 100644
--- a/ir/be/beasm.c
+++ b/ir/be/beasm.c
@@ -146,7 +146,7 @@ void be_parse_asm_constraints_internal(be_asm_constraint_t *const constraint, id
/* Determine number of output operands. */
static unsigned be_count_asm_outputs(ir_node const *const node)
{
- unsigned n_outputs = pn_be_Asm_first_out; /* At least the memory output. */
+ unsigned n_outputs = pn_be_Asm_first_out; /* At least the default outputs. */
ir_asm_constraint const *const constraints = get_ASM_constraints(node);
for (unsigned i = 0, n = get_ASM_n_constraints(node); i != n; ++i) {
n_outputs = MAX(n_outputs, (unsigned)(constraints[i].out_pos + 1));
@@ -158,7 +158,8 @@ be_asm_info_t be_asm_prepare_info(ir_node const *const node)
{
unsigned const n_outs = be_count_asm_outputs(node);
arch_register_req_t const **const out_reqs = NEW_ARR_F(arch_register_req_t const*, n_outs);
- out_reqs[pn_be_Asm_M] = arch_memory_req;
+ out_reqs[pn_be_Asm_M] = arch_memory_req;
+ out_reqs[pn_be_Asm_X_regular] = arch_exec_req;
ir_node **const ins = NEW_ARR_F(ir_node*, n_be_Asm_first_in);
arch_register_req_t const **const in_reqs = NEW_ARR_F(arch_register_req_t const*, n_be_Asm_first_in);
diff --git a/ir/be/benode.h b/ir/be/benode.h
index eca1301..f1f582d 100644
--- a/ir/be/benode.h
+++ b/ir/be/benode.h
@@ -190,6 +190,7 @@ enum {
enum {
pn_be_Asm_M,
+ pn_be_Asm_X_regular,
pn_be_Asm_first_out,
};