pinned = "yes"
attr_struct = "alloc_attr"
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Alloc, &res->attr.alloc.exc.frag_arr);
- #endif
'''
class Anchor(Op):
pinned_init = "op_pin_state_pinned"
attr_struct = "bound_attr"
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Bound, &res->attr.bound.exc.frag_arr);
- #endif
'''
class Break(Op):
dict(
type = "ir_type*",
name = "type"
+ ),
+ dict(
+ type = "unsigned",
+ name = "tail_call",
+ # the tail call attribute can only be set by analysis
+ init = "0"
)
]
attr_struct = "call_attr"
assert((get_unknown_type() == type) || is_Method_type(type));
'''
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Call, &res->attr.call.exc.frag_arr);
- #endif
'''
class CallBegin(Op):
pinned = "memory"
pinned_init = "op_pin_state_pinned"
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_CopyB, &res->attr.copyb.exc.frag_arr);
- #endif
'''
class Div(Op):
op_index = 1
arity_override = "oparity_binary"
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Div, &res->attr.except.frag_arr);
- #endif
'''
class DivMod(Op):
op_index = 1
arity_override = "oparity_binary"
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_DivMod, &res->attr.except.frag_arr);
- #endif
'''
class Dummy(Op):
),
]
d_post = '''
-#if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Load, &res->attr.load.exc.frag_arr);
-#endif
'''
class Minus(Unop):
op_index = 1
arity_override = "oparity_binary"
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Mod, &res->attr.except.frag_arr);
- #endif
'''
class Mul(Binop):
op_index = 1
arity_override = "oparity_binary"
d_post = '''
- #if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Quot, &res->attr.except.frag_arr);
- #endif
'''
class Raise(Op):
),
]
d_post = '''
-#if PRECISE_EXC_CONTEXT
firm_alloc_frag_arr(res, op_Store, &res->attr.store.exc.frag_arr);
-#endif
'''
class Sub(Binop):