+static void pre_transform_anchor(int anchor)
+{
+ ir_node *old_anchor_node = get_irn_n(env.old_anchor, anchor);
+ ir_node *transformed = be_transform_node(old_anchor_node);
+ set_irg_anchor(current_ir_graph, anchor, transformed);
+}
+
+static void kill_unused_anchor(int anchor)
+{
+ ir_node *old_anchor_node = get_irn_n(env.old_anchor, anchor);
+ ir_node *old_bad = get_irn_n(env.old_anchor, anchor_bad);
+ if(old_anchor_node != NULL && get_irn_n_edges(old_anchor_node) <= 1) {
+ set_irn_n(env.old_anchor, anchor, old_bad);
+ }
+}
+
+static ir_node *new_be_Anchor(ir_graph *irg)
+{
+ struct obstack *obst = be_get_birg_obst(irg);
+ backend_info_t *info;
+ ir_node *new_anchor;
+
+ /* Hack: some places in the code ask the Anchor for its register
+ requirements */
+ new_anchor = new_Anchor(irg);
+ info = be_get_info(new_anchor);
+ info->out_infos = NEW_ARR_D(reg_out_info_t, obst, 1);
+ memset(info->out_infos, 0, 1 * sizeof(info->out_infos[0]));
+ info->out_infos[0].req = arch_no_register_req;
+
+ return new_anchor;
+}
+