summaryrefslogtreecommitdiffhomepage
path: root/ir/be/beasm.c
diff options
context:
space:
mode:
authorChristoph Mallon <christoph.mallon@gmx.de>2019-03-04 20:35:16 +0100
committerChristoph Mallon <christoph.mallon@gmx.de>2019-04-05 20:44:55 +0200
commit2d1d9840a3fb6aa791ff7c077a5e90d0fa49d02e (patch)
tree754db5ec4e83caa442e82334a7a0fac367b136f3 /ir/be/beasm.c
parent0d9e5f5dc1737e721fa2cdbd41f497dff94ebf26 (diff)
beasm: Allow be_Asm nodes as control flow nodes.
This is done by treating them as fragile.
Diffstat (limited to 'ir/be/beasm.c')
-rw-r--r--ir/be/beasm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/ir/be/beasm.c b/ir/be/beasm.c
index 2c26843..89eb87c 100644
--- a/ir/be/beasm.c
+++ b/ir/be/beasm.c
@@ -346,6 +346,11 @@ ir_node *be_make_asm(ir_node const *const node, be_asm_info_t const *const info,
arch_register_req_t const **const dup_in_reqs = DUP_ARR_D(arch_register_req_t const*, obst, in_reqs);
ir_node *const new_node = be_new_Asm(dbgi, block, n_ins, in, dup_in_reqs, n_outs, text, operands);
+ if (n_labels != 0) {
+ ir_set_throws_exception(new_node, true);
+ set_irn_pinned(new_node, op_pin_state_pinned);
+ }
+
for (unsigned i = 0; i != ARRAY_SIZE(add_pressure); ++i) {
if (add_pressure[i] != 0) {
arch_register_class_t const *const cls = &ir_target.isa->register_classes[i];