summaryrefslogtreecommitdiffhomepage
path: root/ir/be/beasm.h
diff options
context:
space:
mode:
authorChristoph Mallon <christoph.mallon@gmx.de>2019-03-04 20:31:56 +0100
committerChristoph Mallon <christoph.mallon@gmx.de>2019-04-05 20:44:54 +0200
commit0d9e5f5dc1737e721fa2cdbd41f497dff94ebf26 (patch)
treeee297650638e363e551a1d1ee759cd387daafc13 /ir/be/beasm.h
parent05d881f5ca246ee3e5bacf65ffc4b884a7819a4f (diff)
beasm: Give label constraints the "register" class 'exec'.
Diffstat (limited to 'ir/be/beasm.h')
-rw-r--r--ir/be/beasm.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/ir/be/beasm.h b/ir/be/beasm.h
index 8d88f1c..84facb7 100644
--- a/ir/be/beasm.h
+++ b/ir/be/beasm.h
@@ -116,7 +116,10 @@ static inline void be_asm_add_inout(be_asm_info_t *const info, be_asm_operand_t
static inline void be_asm_add_out(be_asm_info_t *const info, be_asm_operand_t *const op, struct obstack *const obst, be_asm_constraint_t const *const be_constraint, int const opos)
{
- be_set_asm_operand(op, BE_ASM_OPERAND_OUTPUT_VALUE, opos);
+ be_asm_operand_kind_t const kind =
+ be_constraint->cls == &arch_exec_cls ? BE_ASM_OPERAND_LABEL :
+ /* */ BE_ASM_OPERAND_OUTPUT_VALUE;
+ be_set_asm_operand(op, kind, opos);
arch_register_req_t const *const oreq = be_make_register_req(obst, be_constraint);
info->out_reqs[opos] = oreq;
}