}
} else if (USE_VFP(env_cg->isa)) {
panic("VFP not supported yet");
- return NULL;
} else {
panic("Softfloat not supported yet");
- return NULL;
}
} else { /* complete in gp registers */
int src_bits = get_mode_size_bits(src_mode);
} else if (USE_VFP(env_cg->isa)) {
assert(mode != mode_E && "IEEE Extended FP not supported");
panic("VFP not supported yet");
- return NULL;
}
else {
panic("Softfloat not supported yet");
- return NULL;
}
} else {
#if 0
else if (USE_VFP(env_cg->isa)) {
assert(mode != mode_E && "IEEE Extended FP not supported");
panic("VFP not supported yet");
- return NULL;
}
else {
panic("Softfloat not supported yet");
- return NULL;
}
}
assert(mode_is_data(mode));
}
else {
panic("Softfloat not supported yet");
- return NULL;
}
}
} else if (USE_VFP(env_cg->isa)) {
assert(mode != mode_E && "IEEE Extended FP not supported");
panic("VFP not supported yet");
- return NULL;
} else {
panic("Softfloat not supported yet");
- return NULL;
}
} else {
return gen_int_binop(node, MATCH_SIZE_NEUTRAL,
/* check for special case: the loaded value might not be used */
if (be_get_Proj_for_pn(node, pn_Load_res) == NULL) {
/* add a result proj and a Keep to produce a pseudo use */
- ir_node *proj = new_r_Proj(block, new_load, mode_Iu, pn_arm_Ldr_res);
+ ir_node *proj = new_r_Proj(new_load, mode_Iu, pn_arm_Ldr_res);
be_new_Keep(block, 1, &proj);
}
*/
static ir_node *gen_Proj_Load(ir_node *node)
{
- ir_node *block = be_transform_node(get_nodes_block(node));
ir_node *load = get_Proj_pred(node);
ir_node *new_load = be_transform_node(load);
dbg_info *dbgi = get_irn_dbg_info(node);
case iro_arm_Ldr:
/* handle all gp loads equal: they have the same proj numbers. */
if (proj == pn_Load_res) {
- return new_rd_Proj(dbgi, block, new_load, mode_Iu, pn_arm_Ldr_res);
+ return new_rd_Proj(dbgi, new_load, mode_Iu, pn_arm_Ldr_res);
} else if (proj == pn_Load_M) {
- return new_rd_Proj(dbgi, block, new_load, mode_M, pn_arm_Ldr_M);
+ return new_rd_Proj(dbgi, new_load, mode_M, pn_arm_Ldr_M);
}
break;
case iro_arm_fpaLdf:
if (proj == pn_Load_res) {
ir_mode *mode = get_Load_mode(load);
- return new_rd_Proj(dbgi, block, new_load, mode, pn_arm_fpaLdf_res);
+ return new_rd_Proj(dbgi, new_load, mode, pn_arm_fpaLdf_res);
} else if (proj == pn_Load_M) {
- return new_rd_Proj(dbgi, block, new_load, mode_M, pn_arm_fpaLdf_M);
+ return new_rd_Proj(dbgi, new_load, mode_M, pn_arm_fpaLdf_M);
}
break;
default:
*/
static ir_node *gen_Proj_CopyB(ir_node *node)
{
- ir_node *block = be_transform_node(get_nodes_block(node));
ir_node *pred = get_Proj_pred(node);
ir_node *new_pred = be_transform_node(pred);
dbg_info *dbgi = get_irn_dbg_info(node);
switch (proj) {
case pn_CopyB_M_regular:
if (is_arm_CopyB(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode_M, pn_arm_CopyB_M);
+ return new_rd_Proj(dbgi, new_pred, mode_M, pn_arm_CopyB_M);
}
break;
default:
*/
static ir_node *gen_Proj_Quot(ir_node *node)
{
- ir_node *block = be_transform_node(get_nodes_block(node));
ir_node *pred = get_Proj_pred(node);
ir_node *new_pred = be_transform_node(pred);
dbg_info *dbgi = get_irn_dbg_info(node);
switch (proj) {
case pn_Quot_M:
if (is_arm_fpaDvf(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode_M, pn_arm_fpaDvf_M);
+ return new_rd_Proj(dbgi, new_pred, mode_M, pn_arm_fpaDvf_M);
} else if (is_arm_fpaRdf(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode_M, pn_arm_fpaRdf_M);
+ return new_rd_Proj(dbgi, new_pred, mode_M, pn_arm_fpaRdf_M);
} else if (is_arm_fpaFdv(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode_M, pn_arm_fpaFdv_M);
+ return new_rd_Proj(dbgi, new_pred, mode_M, pn_arm_fpaFdv_M);
} else if (is_arm_fpaFrd(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode_M, pn_arm_fpaFrd_M);
+ return new_rd_Proj(dbgi, new_pred, mode_M, pn_arm_fpaFrd_M);
}
break;
case pn_Quot_res:
if (is_arm_fpaDvf(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode, pn_arm_fpaDvf_res);
+ return new_rd_Proj(dbgi, new_pred, mode, pn_arm_fpaDvf_res);
} else if (is_arm_fpaRdf(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode, pn_arm_fpaRdf_res);
+ return new_rd_Proj(dbgi, new_pred, mode, pn_arm_fpaRdf_res);
} else if (is_arm_fpaFdv(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode, pn_arm_fpaFdv_res);
+ return new_rd_Proj(dbgi, new_pred, mode, pn_arm_fpaFdv_res);
} else if (is_arm_fpaFrd(new_pred)) {
- return new_rd_Proj(dbgi, block, new_pred, mode, pn_arm_fpaFrd_res);
+ return new_rd_Proj(dbgi, new_pred, mode, pn_arm_fpaFrd_res);
}
break;
default:
*/
static ir_node *gen_Proj_be_AddSP(ir_node *node)
{
- ir_node *block = be_transform_node(get_nodes_block(node));
ir_node *pred = get_Proj_pred(node);
ir_node *new_pred = be_transform_node(pred);
dbg_info *dbgi = get_irn_dbg_info(node);
long proj = get_Proj_proj(node);
if (proj == pn_be_AddSP_sp) {
- ir_node *res = new_rd_Proj(dbgi, block, new_pred, mode_Iu,
+ ir_node *res = new_rd_Proj(dbgi, new_pred, mode_Iu,
pn_arm_SubSPandCopy_stack);
arch_set_irn_register(res, &arm_gp_regs[REG_SP]);
return res;
} else if (proj == pn_be_AddSP_res) {
- return new_rd_Proj(dbgi, block, new_pred, mode_Iu, pn_arm_SubSPandCopy_addr);
+ return new_rd_Proj(dbgi, new_pred, mode_Iu, pn_arm_SubSPandCopy_addr);
} else if (proj == pn_be_AddSP_M) {
- return new_rd_Proj(dbgi, block, new_pred, mode_M, pn_arm_SubSPandCopy_M);
+ return new_rd_Proj(dbgi, new_pred, mode_M, pn_arm_SubSPandCopy_M);
}
panic("Unsupported Proj from AddSP");
}
*/
static ir_node *gen_Proj_be_SubSP(ir_node *node)
{
- ir_node *block = be_transform_node(get_nodes_block(node));
ir_node *pred = get_Proj_pred(node);
ir_node *new_pred = be_transform_node(pred);
dbg_info *dbgi = get_irn_dbg_info(node);
long proj = get_Proj_proj(node);
if (proj == pn_be_SubSP_sp) {
- ir_node *res = new_rd_Proj(dbgi, block, new_pred, mode_Iu,
+ ir_node *res = new_rd_Proj(dbgi, new_pred, mode_Iu,
pn_arm_AddSP_stack);
arch_set_irn_register(res, &arm_gp_regs[REG_SP]);
return res;
} else if (proj == pn_be_SubSP_M) {
- return new_rd_Proj(dbgi, block, new_pred, mode_M, pn_arm_AddSP_M);
+ return new_rd_Proj(dbgi, new_pred, mode_M, pn_arm_AddSP_M);
}
panic("Unsupported Proj from SubSP");
}
ir_node *new_pred = be_transform_node(pred);
ir_mode *mode = get_irn_mode(node);
if (mode_needs_gp_reg(mode)) {
- ir_node *block = be_transform_node(get_nodes_block(node));
- ir_node *new_proj = new_r_Proj(block, new_pred, mode_Iu,
+ ir_node *new_proj = new_r_Proj(new_pred, mode_Iu,
get_Proj_proj(node));
new_proj->node_nr = node->node_nr;
return new_proj;
* and fix this later */
phi = new_ir_node(dbgi, irg, block, op_Phi, mode, get_irn_arity(node),
get_irn_in(node) + 1);
- copy_node_attr(node, phi);
+ copy_node_attr(irg, node, phi);
be_duplicate_deps(node, phi);
arch_set_out_register_req(phi, 0, req);
*/
static ir_node *bad_transform(ir_node *irn)
{
- panic("ARM backend: Not implemented: %+F", irn);
+ panic("ARM backend: unexpected node %+F", irn);
}
/**
set_transformer(op_Tuple, bad_transform);
}
-/**
- * Pre-transform all unknown nodes.
- */
-static void arm_pretransform_node(void)
-{
- arm_code_gen_t *cg = env_cg;
-
- cg->unknown_gp = be_pre_transform_node(cg->unknown_gp);
- cg->unknown_fpa = be_pre_transform_node(cg->unknown_fpa);
-}
-
/**
* Initialize fpa Immediate support.
*/
}
arm_register_transformers();
env_cg = cg;
- be_transform_graph(cg->birg, arm_pretransform_node);
+ be_transform_graph(cg->irg, NULL);
}
void arm_init_transform(void)