-ir_node *(get_Phi_next)(const ir_node *phi) {
- return _get_Phi_next(phi);
-}
-
-void (set_Phi_next)(ir_node *phi, ir_node *next) {
- _set_Phi_next(phi, next);
-}
-
-int is_memop(const ir_node *node) {
- ir_opcode code = get_irn_opcode(node);
- return (code == iro_Load || code == iro_Store);
-}
-
-ir_node *get_memop_mem(const ir_node *node) {
- assert(is_memop(node));
- return get_irn_n(node, 0);
-}
-
-void set_memop_mem(ir_node *node, ir_node *mem) {
- assert(is_memop(node));
- set_irn_n(node, 0, mem);
-}
-
-ir_node *get_memop_ptr(const ir_node *node) {
- assert(is_memop(node));
- return get_irn_n(node, 1);
-}
-
-void set_memop_ptr(ir_node *node, ir_node *ptr) {
- assert(is_memop(node));
- set_irn_n(node, 1, ptr);
-}
-
-ir_node *
-get_Load_mem(const ir_node *node) {
- assert(is_Load(node));
- return get_irn_n(node, 0);
-}
-
-void
-set_Load_mem(ir_node *node, ir_node *mem) {
- assert(is_Load(node));
- set_irn_n(node, 0, mem);
-}
-
-ir_node *
-get_Load_ptr(const ir_node *node) {
- assert(is_Load(node));
- return get_irn_n(node, 1);
-}
-
-void
-set_Load_ptr(ir_node *node, ir_node *ptr) {
- assert(is_Load(node));
- set_irn_n(node, 1, ptr);
-}
-
-ir_mode *
-get_Load_mode(const ir_node *node) {
- assert(is_Load(node));
- return node->attr.load.mode;
-}
-
-void
-set_Load_mode(ir_node *node, ir_mode *mode) {
- assert(is_Load(node));
- node->attr.load.mode = mode;
-}
-
-ir_volatility
-get_Load_volatility(const ir_node *node) {
- assert(is_Load(node));
- return node->attr.load.volatility;
-}
-
-void
-set_Load_volatility(ir_node *node, ir_volatility volatility) {
- assert(is_Load(node));
- node->attr.load.volatility = volatility;
-}
-
-ir_align
-get_Load_align(const ir_node *node) {
- assert(is_Load(node));
- return node->attr.load.aligned;
-}
-
-void
-set_Load_align(ir_node *node, ir_align align) {
- assert(is_Load(node));
- node->attr.load.aligned = align;
-}
-
-
-ir_node *
-get_Store_mem(const ir_node *node) {
- assert(is_Store(node));
- return get_irn_n(node, 0);
-}
-
-void
-set_Store_mem(ir_node *node, ir_node *mem) {
- assert(is_Store(node));
- set_irn_n(node, 0, mem);
-}
-
-ir_node *
-get_Store_ptr(const ir_node *node) {
- assert(is_Store(node));
- return get_irn_n(node, 1);
-}
-
-void
-set_Store_ptr(ir_node *node, ir_node *ptr) {
- assert(is_Store(node));
- set_irn_n(node, 1, ptr);
-}
-
-ir_node *
-get_Store_value(const ir_node *node) {
- assert(is_Store(node));
- return get_irn_n(node, 2);
-}
-
-void
-set_Store_value(ir_node *node, ir_node *value) {
- assert(is_Store(node));
- set_irn_n(node, 2, value);
-}
-
-ir_volatility
-get_Store_volatility(const ir_node *node) {
- assert(is_Store(node));
- return node->attr.store.volatility;
-}
-
-void
-set_Store_volatility(ir_node *node, ir_volatility volatility) {
- assert(is_Store(node));
- node->attr.store.volatility = volatility;
-}
-
-ir_align
-get_Store_align(const ir_node *node) {
- assert(is_Store(node));
- return node->attr.store.aligned;
-}
-
-void
-set_Store_align(ir_node *node, ir_align align) {
- assert(is_Store(node));
- node->attr.store.aligned = align;
-}
-
-
-ir_node *
-get_Alloc_mem(const ir_node *node) {
- assert(is_Alloc(node));
- return get_irn_n(node, 0);
-}
-
-void
-set_Alloc_mem(ir_node *node, ir_node *mem) {
- assert(is_Alloc(node));
- set_irn_n(node, 0, mem);
-}
-
-ir_node *
-get_Alloc_size(const ir_node *node) {
- assert(is_Alloc(node));
- return get_irn_n(node, 1);
-}
-
-void
-set_Alloc_size(ir_node *node, ir_node *size) {
- assert(is_Alloc(node));
- set_irn_n(node, 1, size);
-}
-
-ir_type *
-get_Alloc_type(ir_node *node) {
- assert(is_Alloc(node));
- return node->attr.alloc.type = skip_tid(node->attr.alloc.type);
-}
-
-void
-set_Alloc_type(ir_node *node, ir_type *tp) {
- assert(is_Alloc(node));
- node->attr.alloc.type = tp;
-}
-
-ir_where_alloc
-get_Alloc_where(const ir_node *node) {
- assert(is_Alloc(node));
- return node->attr.alloc.where;
-}
-
-void
-set_Alloc_where(ir_node *node, ir_where_alloc where) {
- assert(is_Alloc(node));
- node->attr.alloc.where = where;
-}
-
-
-ir_node *
-get_Free_mem(const ir_node *node) {
- assert(is_Free(node));
- return get_irn_n(node, 0);
-}
-
-void
-set_Free_mem(ir_node *node, ir_node *mem) {
- assert(is_Free(node));
- set_irn_n(node, 0, mem);
-}
-
-ir_node *
-get_Free_ptr(const ir_node *node) {
- assert(is_Free(node));
- return get_irn_n(node, 1);
-}
-
-void
-set_Free_ptr(ir_node *node, ir_node *ptr) {
- assert(is_Free(node));
- set_irn_n(node, 1, ptr);
-}
-
-ir_node *
-get_Free_size(const ir_node *node) {
- assert(is_Free(node));
- return get_irn_n(node, 2);
-}
-
-void
-set_Free_size(ir_node *node, ir_node *size) {
- assert(is_Free(node));
- set_irn_n(node, 2, size);
-}
-
-ir_type *
-get_Free_type(ir_node *node) {
- assert(is_Free(node));
- return node->attr.free.type = skip_tid(node->attr.free.type);
-}
-
-void
-set_Free_type(ir_node *node, ir_type *tp) {
- assert(is_Free(node));
- node->attr.free.type = tp;
-}
-
-ir_where_alloc
-get_Free_where(const ir_node *node) {
- assert(is_Free(node));
- return node->attr.free.where;
-}
-
-void
-set_Free_where(ir_node *node, ir_where_alloc where) {
- assert(is_Free(node));
- node->attr.free.where = where;
-}
-
-ir_node **get_Sync_preds_arr(ir_node *node) {
- assert(is_Sync(node));
- return (ir_node **)&(get_irn_in(node)[1]);
-}
-
-int get_Sync_n_preds(const ir_node *node) {
- assert(is_Sync(node));
- return (get_irn_arity(node));
-}
-
-/*
-void set_Sync_n_preds(ir_node *node, int n_preds) {
- assert(is_Sync(node));
-}
-*/
-
-ir_node *get_Sync_pred(const ir_node *node, int pos) {
- assert(is_Sync(node));
- return get_irn_n(node, pos);
-}
-
-void set_Sync_pred(ir_node *node, int pos, ir_node *pred) {
- assert(is_Sync(node));
- set_irn_n(node, pos, pred);
-}
-
-/* Add a new Sync predecessor */
-void add_Sync_pred(ir_node *node, ir_node *pred) {
- assert(is_Sync(node));
- add_irn_n(node, pred);
-}
-
-/* Returns the source language type of a Proj node. */
-ir_type *get_Proj_type(ir_node *n) {
- ir_type *tp = firm_unknown_type;
- ir_node *pred = get_Proj_pred(n);
-
- switch (get_irn_opcode(pred)) {
- case iro_Proj: {
- ir_node *pred_pred;
- /* Deal with Start / Call here: we need to know the Proj Nr. */
- assert(get_irn_mode(pred) == mode_T);
- pred_pred = get_Proj_pred(pred);
-
- if (is_Start(pred_pred)) {
- ir_type *mtp = get_entity_type(get_irg_entity(get_irn_irg(pred_pred)));
- tp = get_method_param_type(mtp, get_Proj_proj(n));
- } else if (is_Call(pred_pred)) {
- ir_type *mtp = get_Call_type(pred_pred);
- tp = get_method_res_type(mtp, get_Proj_proj(n));
- }
- } break;
- case iro_Start: break;
- case iro_Call: break;
- case iro_Load: {
- ir_node *a = get_Load_ptr(pred);
- if (is_Sel(a))
- tp = get_entity_type(get_Sel_entity(a));
- } break;
- default:
- break;
- }
- return tp;
-}
-
-ir_node *
-get_Proj_pred(const ir_node *node) {
- assert(is_Proj(node));
- return get_irn_n(node, 0);
-}
-
-void
-set_Proj_pred(ir_node *node, ir_node *pred) {
- assert(is_Proj(node));
- set_irn_n(node, 0, pred);
-}
-
-long
-get_Proj_proj(const ir_node *node) {
-#ifdef INTERPROCEDURAL_VIEW
- ir_opcode code = get_irn_opcode(node);
-
- if (code == iro_Proj) {
- return node->attr.proj;
- }
- else {
- assert(code == iro_Filter);
- return node->attr.filter.proj;
- }
-#else
- assert(is_Proj(node));
- return node->attr.proj;
-#endif /* INTERPROCEDURAL_VIEW */
-}
-
-void
-set_Proj_proj(ir_node *node, long proj) {
-#ifdef INTERPROCEDURAL_VIEW
- ir_opcode code = get_irn_opcode(node);
-
- if (code == iro_Proj) {
- node->attr.proj = proj;
- }
- else {
- assert(code == iro_Filter);
- node->attr.filter.proj = proj;
- }
-#else
- assert(is_Proj(node));
- node->attr.proj = proj;
-#endif /* INTERPROCEDURAL_VIEW */
-}
-
-/* Returns non-zero if a node is a routine parameter. */
-int (is_arg_Proj)(const ir_node *node) {
- return _is_arg_Proj(node);
-}
-
-ir_node **
-get_Tuple_preds_arr(ir_node *node) {
- assert(is_Tuple(node));
- return (ir_node **)&(get_irn_in(node)[1]);
-}
-
-int
-get_Tuple_n_preds(const ir_node *node) {
- assert(is_Tuple(node));
- return get_irn_arity(node);
-}
-
-/*
-void
-set_Tuple_n_preds(ir_node *node, int n_preds) {
- assert(is_Tuple(node));
-}
-*/
-
-ir_node *
-get_Tuple_pred(const ir_node *node, int pos) {
- assert(is_Tuple(node));
- return get_irn_n(node, pos);
-}
-
-void
-set_Tuple_pred(ir_node *node, int pos, ir_node *pred) {
- assert(is_Tuple(node));
- set_irn_n(node, pos, pred);
-}
-
-ir_node *
-get_Id_pred(const ir_node *node) {
- assert(is_Id(node));
- return get_irn_n(node, 0);
-}
-
-void
-set_Id_pred(ir_node *node, ir_node *pred) {
- assert(is_Id(node));
- set_irn_n(node, 0, pred);
-}
-
-ir_node *get_Confirm_value(const ir_node *node) {
- assert(is_Confirm(node));
- return get_irn_n(node, 0);
-}
-
-void set_Confirm_value(ir_node *node, ir_node *value) {
- assert(is_Confirm(node));
- set_irn_n(node, 0, value);
-}
-
-ir_node *get_Confirm_bound(const ir_node *node) {
- assert(is_Confirm(node));
- return get_irn_n(node, 1);
-}
-
-void set_Confirm_bound(ir_node *node, ir_node *bound) {
- assert(is_Confirm(node));
- set_irn_n(node, 0, bound);
-}
-
-pn_Cmp get_Confirm_cmp(const ir_node *node) {
- assert(is_Confirm(node));
- return node->attr.confirm.cmp;
-}
-
-void set_Confirm_cmp(ir_node *node, pn_Cmp cmp) {
- assert(is_Confirm(node));
- node->attr.confirm.cmp = cmp;
-}
-
-ir_node *
-get_Filter_pred(ir_node *node) {
- assert(is_Filter(node));
- return node->in[1];
-}
-
-void
-set_Filter_pred(ir_node *node, ir_node *pred) {
- assert(is_Filter(node));
- node->in[1] = pred;
-}
-
-long
-get_Filter_proj(ir_node *node) {
- assert(is_Filter(node));
- return node->attr.filter.proj;
-}
-
-void
-set_Filter_proj(ir_node *node, long proj) {
- assert(is_Filter(node));
- node->attr.filter.proj = proj;
-}
-
-/* Don't use get_irn_arity, get_irn_n in implementation as access
- shall work independent of view!!! */
-void set_Filter_cg_pred_arr(ir_node *node, int arity, ir_node ** in) {
- assert(is_Filter(node));
- if (node->attr.filter.in_cg == NULL || arity != ARR_LEN(node->attr.filter.in_cg) - 1) {
- ir_graph *irg = get_irn_irg(node);
- node->attr.filter.in_cg = NEW_ARR_D(ir_node *, current_ir_graph->obst, arity + 1);
- node->attr.filter.backedge = new_backedge_arr(irg->obst, arity);
- node->attr.filter.in_cg[0] = node->in[0];
- }
- memcpy(node->attr.filter.in_cg + 1, in, sizeof(ir_node *) * arity);
-}
-
-void set_Filter_cg_pred(ir_node * node, int pos, ir_node * pred) {
- assert(is_Filter(node) && node->attr.filter.in_cg &&
- 0 <= pos && pos < ARR_LEN(node->attr.filter.in_cg) - 1);
- node->attr.filter.in_cg[pos + 1] = pred;
-}
-
-int get_Filter_n_cg_preds(ir_node *node) {
- assert(is_Filter(node) && node->attr.filter.in_cg);
- return (ARR_LEN(node->attr.filter.in_cg) - 1);
-}
-
-ir_node *get_Filter_cg_pred(ir_node *node, int pos) {
- int arity;
- assert(is_Filter(node) && node->attr.filter.in_cg &&
- 0 <= pos);
- arity = ARR_LEN(node->attr.filter.in_cg);
- assert(pos < arity - 1);
- return node->attr.filter.in_cg[pos + 1];
-}
-
-/* Mux support */
-ir_node *get_Mux_sel(const ir_node *node) {
- assert(is_Mux(node));
- return node->in[1];
-}
-
-void set_Mux_sel(ir_node *node, ir_node *sel) {
- assert(is_Mux(node));
- node->in[1] = sel;
-}
-
-ir_node *get_Mux_false(const ir_node *node) {
- assert(is_Mux(node));
- return node->in[2];
-}
-
-void set_Mux_false(ir_node *node, ir_node *ir_false) {
- assert(is_Mux(node));
- node->in[2] = ir_false;
-}
-
-ir_node *get_Mux_true(const ir_node *node) {
- assert(is_Mux(node));
- return node->in[3];
-}
-
-void set_Mux_true(ir_node *node, ir_node *ir_true) {
- assert(is_Mux(node));
- node->in[3] = ir_true;
-}
-
-/* CopyB support */
-ir_node *get_CopyB_mem(const ir_node *node) {
- assert(is_CopyB(node));
- return get_irn_n(node, 0);
-}
-
-void set_CopyB_mem(ir_node *node, ir_node *mem) {
- assert(node->op == op_CopyB);
- set_irn_n(node, 0, mem);
-}
-
-ir_node *get_CopyB_dst(const ir_node *node) {
- assert(is_CopyB(node));
- return get_irn_n(node, 1);
-}
-
-void set_CopyB_dst(ir_node *node, ir_node *dst) {
- assert(is_CopyB(node));
- set_irn_n(node, 1, dst);
-}
-
-ir_node *get_CopyB_src(const ir_node *node) {
- assert(is_CopyB(node));
- return get_irn_n(node, 2);
-}
-
-void set_CopyB_src(ir_node *node, ir_node *src) {
- assert(is_CopyB(node));
- set_irn_n(node, 2, src);
-}
-
-ir_type *get_CopyB_type(ir_node *node) {
- assert(is_CopyB(node));
- return node->attr.copyb.data_type = skip_tid(node->attr.copyb.data_type);
-}
-
-void set_CopyB_type(ir_node *node, ir_type *data_type) {
- assert(is_CopyB(node) && data_type);
- node->attr.copyb.data_type = data_type;
-}
-
-
-ir_type *
-get_InstOf_type(ir_node *node) {
- assert(node->op == op_InstOf);
- return node->attr.instof.type = skip_tid(node->attr.instof.type);
-}
-
-void
-set_InstOf_type(ir_node *node, ir_type *type) {
- assert(node->op == op_InstOf);
- node->attr.instof.type = type;
-}
-
-ir_node *
-get_InstOf_store(const ir_node *node) {
- assert(node->op == op_InstOf);
- return get_irn_n(node, 0);
-}
-
-void
-set_InstOf_store(ir_node *node, ir_node *obj) {
- assert(node->op == op_InstOf);
- set_irn_n(node, 0, obj);