flags = ["commutative"]
class Alloc(Op):
- ins = [ "mem", "size" ]
+ ins = [ "mem", "count" ]
outs = [ "M", "X_regular", "X_except", "res" ]
flags = [ "fragile", "uses_memory" ]
attrs = [
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):
mode = "mode_T"
arity = "variable"
flags = [ "keep", "uses_memory" ]
- attr_struct = "asm_attr"
pinned = "memory"
pinned_init = "op_pin_state_pinned"
+ attr_struct = "asm_attr"
+ attrs_name = "assem"
attrs = [
dict(
name = "input_constraints",
dict(
name = "n_output_constraints",
type = "int",
+ noprop = True,
),
dict(
name = "output_constraints",
dict(
name = "n_clobbers",
type = "int",
+ noprop = True,
),
dict(
name = "clobbers",
java_noconstr = True
class Bad(Op):
- mode = "mode_Bad"
- flags = [ "cfopcode", "fragile", "start_block", "dump_noblock" ]
- pinned = "yes"
- knownBlock = True
- singleton = True
+ mode = "mode_Bad"
+ flags = [ "cfopcode", "fragile", "start_block", "dump_noblock" ]
+ pinned = "yes"
+ knownBlock = True
+ singleton = True
+ attr_struct = "irg_attr"
init = '''
res->attr.irg.irg = irg;
'''
set_Block_matured(res, 1);
set_Block_block_visited(res, 0);
- '''
- d_pre = '''
- int i;
- int has_unknown = 0;
- '''
-
- d_post = '''
/* Create and initialize array for Phi-node construction. */
- if (get_irg_phase_state(current_ir_graph) == phase_building) {
- res->attr.block.graph_arr = NEW_ARR_D(ir_node *, current_ir_graph->obst,
- current_ir_graph->n_loc);
- memset(res->attr.block.graph_arr, 0, sizeof(ir_node *)*current_ir_graph->n_loc);
+ if (get_irg_phase_state(irg) == phase_building) {
+ res->attr.block.graph_arr = NEW_ARR_D(ir_node *, irg->obst, irg->n_loc);
+ memset(res->attr.block.graph_arr, 0, irg->n_loc * sizeof(ir_node*));
}
-
- for (i = arity - 1; i >= 0; i--)
- if (is_Unknown(in[i])) {
- has_unknown = 1;
- break;
- }
-
- if (!has_unknown) res = optimize_node(res);
-
- current_ir_graph->current_block = res;
-
- IRN_VRFY_IRG(res, current_ir_graph);
'''
java_add = '''
pinned = "exception"
pinned_init = "op_pin_state_pinned"
attr_struct = "bound_attr"
+ attrs_name = "bound"
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*",
flags = [ "cfopcode", "forking" ]
pinned = "yes"
attrs = [
- dict(
- name = "kind",
- type = "cond_kind",
- init = "dense"
- ),
dict(
name = "default_proj",
type = "long",
),
]
attr_struct = "confirm_attr"
+ attrs_name = "confirm"
class Const(Op):
mode = ""
)
]
attr_struct = "conv_attr"
+ attrs_name = "conv"
class CopyB(Op):
ins = [ "mem", "dst", "src" ]
)
]
attr_struct = "copyb_attr"
+ attrs_name = "copyb"
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):
]
pinned = "yes"
attr_struct = "filter_attr"
+ attrs_name = "filter"
java_noconstr = True
class Free(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):
flags = [ "commutative" ]
class Phi(Op):
- pinned = "yes"
- arity = "variable"
- flags = []
- attr_struct = "phi_attr"
- custom_is = True
+ pinned = "yes"
+ arity = "variable"
+ flags = []
+ attr_struct = "phi_attr"
+ custom_is = True
java_noconstr = True
init = '''
/* Memory Phis in endless loops must be kept alive.
pinned = "yes"
class Proj(Op):
- ins = [ "pred" ]
- flags = []
- pinned = "no"
- attrs = [
+ ins = [ "pred" ]
+ flags = []
+ pinned = "no"
+ knownBlock = True
+ knownGraph = True
+ block = "get_nodes_block(irn_pred)"
+ graph = "get_irn_irg(irn_pred)"
+ attrs = [
dict(
type = "long",
name = "proj",
- initname = ""
+ initname = "",
+ noprop = False,
)
]
attr_struct = "long"
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):
attrs = [
dict(
type = "ir_entity*",
- name = "entity"
+ name = "entity",
+ noprop = True
)
]
attr_struct = "symconst_attr"