14 ins = [ "left", "right" ],
28 flags = "commutative",
32 ins = [ "mem", "size" ],
33 outs = [ "M", "X_regular", "X_except", "res" ],
34 flags = "fragile, uses_memory",
42 type = "ir_where_alloc"
47 #if PRECISE_EXC_CONTEXT
48 firm_alloc_frag_arr(res, op_Alloc, &res->attr.alloc.exc.frag_arr);
56 flags = "dump_noblock",
63 flags = "commutative",
69 flags = "keep, uses_memory",
70 attr_struct = "asm_attr",
72 pinned_init = "pinned",
75 name = "input_constraints",
76 type = "ir_asm_constraint*",
79 name = "n_output_constraints",
83 name = "output_constraints",
84 type = "ir_asm_constraint*",
104 flags = "cfopcode, fragile, start_block, dump_noblock",
116 attr_struct = "block_attr",
117 java_noconstr = True,
120 /* macroblock header */
123 res->attr.block.is_dead = 0;
124 res->attr.block.is_mb_head = 1;
125 res->attr.block.has_label = 0;
126 res->attr.block.irg = irg;
127 res->attr.block.backedge = new_backedge_arr(irg->obst, arity);
128 res->attr.block.in_cg = NULL;
129 res->attr.block.cg_backedge = NULL;
130 res->attr.block.extblk = NULL;
131 res->attr.block.mb_depth = 0;
132 res->attr.block.label = 0;
134 set_Block_matured(res, 1);
135 set_Block_block_visited(res, 0);
144 /* Create and initialize array for Phi-node construction. */
145 if (get_irg_phase_state(current_ir_graph) == phase_building) {
146 res->attr.block.graph_arr = NEW_ARR_D(ir_node *, current_ir_graph->obst,
147 current_ir_graph->n_loc);
148 memset(res->attr.block.graph_arr, 0, sizeof(ir_node *)*current_ir_graph->n_loc);
151 for (i = arity - 1; i >= 0; i--)
152 if (is_Unknown(in[i])) {
157 if (!has_unknown) res = optimize_node(res);
159 current_ir_graph->current_block = res;
161 IRN_VRFY_IRG(res, current_ir_graph);
165 public void addPred(Node node) {
166 binding_cons.add_immBlock_pred(ptr, node.ptr);
169 public void mature() {
170 binding_cons.mature_immBlock(ptr);
174 public Block getBlock() {
178 public boolean blockVisited() {
179 return 0 != binding.Block_block_visited(ptr);
182 public void markBlockVisited() {
183 binding.mark_Block_block_visited(ptr);
186 public boolean isBad() {
187 return binding.is_Bad(ptr) != 0;
198 ins = [ "mem", "index", "lower", "upper" ],
199 outs = [ "M", "X_regular", "X_except", "res" ],
200 flags = "fragile, highlevel",
201 pinned = "exception",
202 pinned_init = "pinned",
203 attr_struct = "bound_attr",
205 #if PRECISE_EXC_CONTEXT
206 firm_alloc_frag_arr(res, op_Bound, &res->attr.bound.exc.frag_arr);
219 outs = [ "M_regular", "X_regular", "X_except", "T_result", "M_except", "P_value_res_base" ],
220 flags = "uses_memory",
223 type = "ir_builtin_kind",
232 pinned_init = "pinned",
234 assert((get_unknown_type() == type) || is_Method_type(type));
237 # TODO: No firm_alloc_frag_arr??
241 ins = [ "mem", "ptr" ],
243 outs = [ "M_regular", "X_regular", "X_except", "T_result", "M_except", "P_value_res_base" ],
244 flags = "fragile, uses_memory",
251 attr_struct = "call_attr",
253 pinned_init = "pinned",
255 assert((get_unknown_type() == type) || is_Method_type(type));
258 #if PRECISE_EXC_CONTEXT
259 firm_alloc_frag_arr(res, op_Call, &res->attr.call.exc.frag_arr);
266 outs = [ "" ], # TODO
267 flags = "cfopcode, ip_cfopcode",
268 # TODO: attribute with call...
269 attr_struct = "callbegin_attr",
270 java_noconstr = True,
272 res->attr.callbegin.call = call;
278 flags = "commutative",
283 mode = "get_irn_mode(irn_op)",
291 attr_struct = "cast_attr",
292 init = "assert(is_atomic_type(type));"
297 outs = [ "False", "Eq", "Lt", "Le", "Gt", "Ge", "Lg", "Leg", "Uo", "Ue", "Ul", "Ule", "Ug", "Uge", "Ne", "True" ],
302 ins = [ "selector" ],
303 outs = [ "false", "true" ],
304 flags = "cfopcode, forking",
312 name = "default_proj",
318 type = "cond_jmp_predicate",
319 init = "COND_JMP_PRED_NONE"
322 attr_struct = "cond_attr"
326 ins = [ "value", "bound" ],
327 mode = "get_irn_mode(irn_value)",
335 attr_struct = "confirm_attr",
340 flags = "constlike, start_block",
349 attr_struct = "const_attr",
366 attr_struct = "conv_attr",
370 ins = [ "mem", "dst", "src" ],
371 outs = [ "M", "X_regular", "X_except" ],
372 flags = "fragile, highlevel, uses_memory",
379 attr_struct = "copyb_attr",
381 pinned_init = "pinned",
383 #if PRECISE_EXC_CONTEXT
384 firm_alloc_frag_arr(res, op_CopyB, &res->attr.copyb.exc.frag_arr);
390 ins = [ "mem", "left", "right" ],
391 outs = [ "M", "X_regular", "X_except", "res" ],
392 flags = "fragile, uses_memory",
393 attrs_name = "divmod",
400 name = "no_remainder",
409 attr_struct = "divmod_attr",
410 pinned = "exception",
413 #if PRECISE_EXC_CONTEXT
414 firm_alloc_frag_arr(res, op_Div, &res->attr.except.frag_arr);
420 ins = [ "mem", "left", "right" ],
421 outs = [ "M", "X_regular", "X_except", "res_div", "res_mod" ],
422 flags = "fragile, uses_memory",
423 attrs_name = "divmod",
430 attr_struct = "divmod_attr",
431 pinned = "exception",
434 #if PRECISE_EXC_CONTEXT
435 firm_alloc_frag_arr(res, op_DivMod, &res->attr.except.frag_arr);
442 flags = "cfopcode, fragile, start_block, constlike, dump_noblock",
444 block = "get_irg_start_block(irg)",
459 flags = "cfopcode, ip_cfopcode",
467 flags = "cfopcode, ip_cfopcode",
473 flags = "commutative",
485 attr_struct = "filter_attr",
488 # TODO: Broken asserts in original:
489 # assert(get_Proj_pred(res));
490 # assert(get_nodes_block(get_Proj_pred(res)));
494 ins = [ "mem", "ptr", "size" ],
496 flags = "uses_memory",
504 type = "ir_where_alloc"
507 attr_struct = "free_attr",
519 flags = "cfopcode, forking, keep",
523 ins = [ "store", "obj" ],
524 outs = [ "M", "X_regular", "X_except", "res", "M_except" ],
532 attr_struct = "io_attr",
534 pinned_init = "floats",
545 ins = [ "mem", "ptr" ],
546 outs = [ "M", "X_regular", "X_except", "res" ],
547 flags = "fragile, uses_memory",
552 java_name = "load_mode"
555 attr_struct = "load_attr",
558 type = "ir_cons_flags",
563 #if PRECISE_EXC_CONTEXT
564 firm_alloc_frag_arr(res, op_Load, &res->attr.load.exc.frag_arr);
575 ins = [ "mem", "left", "right" ],
576 outs = [ "M", "X_regular", "X_except", "res" ],
577 flags = "fragile, uses_memory",
578 attrs_name = "divmod",
585 attr_struct = "divmod_attr",
586 pinned = "exception",
589 #if PRECISE_EXC_CONTEXT
590 firm_alloc_frag_arr(res, op_Mod, &res->attr.except.frag_arr);
597 flags = "commutative",
602 flags = "commutative",
606 ins = [ "sel", "false", "true" ],
612 flags = "dump_noblock, dump_noinput",
624 flags = "commutative",
631 attr_struct = "phi_attr",
633 java_noconstr = True,
638 mode = "get_irn_mode(irn_op)",
652 attr_struct = "long",
657 ins = [ "mem", "left", "right" ],
658 outs = [ "M", "X_regular", "X_except", "res" ],
659 flags = "fragile, uses_memory",
660 attrs_name = "divmod",
667 attr_struct = "divmod_attr",
668 pinned = "exception",
671 #if PRECISE_EXC_CONTEXT
672 firm_alloc_frag_arr(res, op_Quot, &res->attr.except.frag_arr);
678 ins = [ "mem", "exo_ptr" ],
680 flags = "highlevel, cfopcode",
696 ins = [ "mem", "ptr" ],
699 mode = "is_Method_type(get_entity_type(entity)) ? mode_P_code : mode_P_data",
706 attr_struct = "sel_attr",
732 ins = [ "mem", "ptr", "value" ],
733 outs = [ "M", "X_regular", "X_except" ],
734 flags = "fragile, uses_memory",
735 attr_struct = "store_attr",
738 type = "ir_cons_flags",
743 #if PRECISE_EXC_CONTEXT
744 firm_alloc_frag_arr(res, op_Store, &res->attr.store.exc.frag_arr);
756 flags = "constlike, start_block",
764 attr_struct = "symconst_attr",
765 java_noconstr = True,
784 block = "get_irg_start_block(irg)",
785 flags = "cfopcode, fragile, start_block, constlike, dump_noblock",