/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
- *
* This file is part of libFirm.
- *
- * This file may be distributed and/or modified under the terms of the
- * GNU General Public License version 2 as published by the Free Software
- * Foundation and appearing in the file LICENSE.GPL included in the
- * packaging of this file.
- *
- * Licensees holding valid libFirm Professional Edition licenses may use
- * this file in accordance with the libFirm Commercial License.
- * Agreement provided with the Software.
- *
- * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE.
+ * Copyright (C) 2012 University of Karlsruhe.
*/
/**
0
};
-/* Initialize the architecture environment struct. */
-arch_env_t *arch_env_begin_codegeneration(const arch_isa_if_t *isa_if)
-{
- arch_env_t *arch_env = isa_if->begin_codegeneration();
- return arch_env;
-}
-
/**
* Get the isa responsible for a node.
* @param irn The node to get the responsible isa for.
*/
static const arch_irn_ops_t *get_irn_ops(const ir_node *irn)
{
- if (is_Proj(irn)) {
- irn = get_Proj_pred(irn);
- assert(!is_Proj(irn));
- }
-
- ir_op *ops = get_irn_op(irn);
- const arch_irn_ops_t *be_ops = get_op_ops(ops)->be_ops;
-
+ ir_op const *const op = get_irn_op(irn);
+ arch_irn_ops_t const *const be_ops = get_op_ops(op)->be_ops;
+ assert(be_ops);
return be_ops;
}
void arch_perform_memory_operand(ir_node *irn, ir_node *spill, unsigned int i)
{
const arch_irn_ops_t *ops = get_irn_ops(irn);
-
- if (ops->perform_memory_operand) {
- ops->perform_memory_operand(irn, spill, i);
- } else {
- return;
- }
+ ops->perform_memory_operand(irn, spill, i);
}
int arch_get_op_estimated_cost(const ir_node *irn)
void arch_dump_reqs_and_registers(FILE *F, const ir_node *node)
{
- backend_info_t *info = be_get_info(node);
+ backend_info_t *const info = be_get_info(node);
+ int const n_ins = get_irn_arity(node);
/* don't fail on invalid graphs */
- if (info == NULL || info->in_reqs == NULL || info->out_infos == NULL) {
+ if (!info || (!info->in_reqs && n_ins != 0) || !info->out_infos) {
fprintf(F, "invalid register requirements!!!\n");
return;
}
- int n_ins = get_irn_arity(node);
for (int i = 0; i < n_ins; ++i) {
const arch_register_req_t *req = arch_get_irn_register_req_in(node, i);
fprintf(F, "inreq #%d = ", i);