NULL, /* main environment */
7, /* costs for a spill instruction */
5, /* costs for a reload instruction */
+ false, /* no custom abi handling */
},
};
NULL, /* main environment */
7, /* costs for a spill instruction */
5, /* costs for a reload instruction */
+ false, /* no custom abi handling */
},
};
NULL, /* main environment */
7, /* spill costs */
5, /* reload costs */
+ false, /* no custom abi handling */
},
0, /* use generic register names instead of SP, LR, PC */
ARM_FPU_ARCH_FPE, /* FPU architecture */
sp_req->type |= arch_register_req_type_ignore;
}
+ /* break here if backend provides a custom API.
+ * Note: we shouldn't have to setup any be_abi_irg_t* stuff at all,
+ * but need more cleanup to make this work
+ */
+ if (arch_env->custom_abi)
+ return env;
+
env->init_sp = dummy = new_r_Dummy(irg, arch_env->sp->reg_class->mode);
env->calls = NEW_ARR_F(ir_node*, 0);
const be_main_env_t *main_env; /**< the be main environment */
int spill_cost; /**< cost for a be_Spill node */
int reload_cost; /**< cost for a be_Reload node */
+ bool custom_abi : 1; /**< backend does all abi handling
+ and does not need the generic stuff
+ from beabi.h/.c */
};
static inline unsigned arch_irn_get_n_outs(const ir_node *node)
NULL, /* main environment */
7, /* costs for a spill instruction */
5, /* costs for a reload instruction */
+ false, /* no custom abi handling */
},
NULL, /* 16bit register names */
NULL, /* 8bit register names */
NULL, /* main environment */
7, /* costs for a spill instruction */
5, /* costs for a reload instruction */
+ false, /* no custom abi handling */
},
NULL /* current code generator */
};