summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChristoph Mallon <christoph.mallon@gmx.de>2018-05-28 08:57:17 +0200
committerChristoph Mallon <christoph.mallon@gmx.de>2018-05-28 22:26:27 +0200
commite5c27eb35709eba7cf7032005e12042cf0d1e3bf (patch)
treeb108e0d0653f51b01f37eff237fdca0f3982d661
parent3ab887efc100a599279cee6f34dc78353440bdf4 (diff)
Adapt to change the memory is the first output of ASM.
m---------libfirm0
-rw-r--r--src/firm/ast2firm.c6
2 files changed, 3 insertions, 3 deletions
diff --git a/libfirm b/libfirm
-Subproject 9a825064696eebf733ccfc8d72f22c1aef3ec1f
+Subproject 73961e8ead2d3c4af78bbe504479bcd7a750898
diff --git a/src/firm/ast2firm.c b/src/firm/ast2firm.c
index d927cbc..591b6b8 100644
--- a/src/firm/ast2firm.c
+++ b/src/firm/ast2firm.c
@@ -4590,7 +4590,7 @@ static ir_node *asm_statement_to_firm(const asm_statement_t *statement)
ARR_APP1(ir_node*, ins, value);
}
- constraint.out_pos = ARR_LEN(outs);
+ constraint.out_pos = pn_ASM_first_out + ARR_LEN(outs);
constraint.mode = get_ir_mode_storage(expr->base.type);
ARR_APP1(out_info, outs, ((out_info){ expr, addr }));
@@ -4658,14 +4658,14 @@ static ir_node *asm_statement_to_firm(const asm_statement_t *statement)
/* create output projs & connect them */
if (needs_memory) {
- ir_node *projm = new_Proj(node, mode_M, n_constraints);
+ ir_node *const projm = new_Proj(node, mode_M, pn_ASM_M);
set_store(projm);
}
for (size_t i = 0, n_outs = ARR_LEN(outs); i < n_outs; ++i) {
expression_t const *const out_expr = outs[i].expr;
ir_mode *const mode = get_ir_mode_storage(out_expr->base.type);
- ir_node *const proj = new_Proj(node, mode, i);
+ ir_node *const proj = new_Proj(node, mode, pn_ASM_first_out + i);
ir_node *const addr = outs[i].addr;
set_value_for_expression_addr(out_expr, proj, addr);
}