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):
class Builtin(Op):
ins = [ "mem" ]
arity = "variable"
- outs = [ "M_regular", "X_regular", "X_except", "T_result", "M_except", "P_value_res_base" ]
+ outs = [ "M", "X_regular", "X_except", "T_result", "P_value_res_base" ]
flags = [ "uses_memory" ]
attrs = [
dict(
class Call(Op):
ins = [ "mem", "ptr" ]
arity = "variable"
- outs = [ "M_regular", "X_regular", "X_except", "T_result", "M_except", "P_value_res_base" ]
+ outs = [ "M", "X_regular", "X_except", "T_result", "P_value_res_base" ]
flags = [ "fragile", "uses_memory" ]
attrs = [
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):
class Carry(Binop):
flags = [ "commutative" ]
-class Cast(Op):
- ins = [ "op" ]
+class Cast(Unop):
mode = "get_irn_mode(irn_op)"
flags = [ "highlevel" ]
- pinned = "no"
attrs = [
dict(
type = "ir_type*",
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):
class InstOf(Op):
ins = [ "store", "obj" ]
- outs = [ "M", "X_regular", "X_except", "res", "M_except" ]
+ outs = [ "M", "X_regular", "X_except", "res" ]
flags = [ "highlevel" ]
attrs = [
dict(
),
]
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):