* opcodes and the coresponding node constructors for the sparc
* assembler irg.
* @author Hannes Rapp, Matthias Braun
- * @version $Id$
*/
#include "config.h"
#include "irprintf.h"
#include "xmalloc.h"
-#include "../bearch.h"
+#include "bearch.h"
+#include "bearch_sparc_t.h"
#include "sparc_nodes_attr.h"
#include "sparc_new_nodes.h"
* @param n the node to dump
* @param reason indicates which kind of information should be dumped
*/
-static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason)
+static void sparc_dump_node(FILE *F, const ir_node *n, dump_reason_t reason)
{
const sparc_attr_t *sparc_attr;
get_relation_string(attr->relation));
fprintf(F, "unsigned: %s\n", attr->is_unsigned ? "true" : "false");
}
- if (has_switch_jmp_attr(n)) {
- const sparc_switch_jmp_attr_t *attr
- = get_sparc_switch_jmp_attr_const(n);
- fprintf(F, "default proj: %ld\n", attr->default_proj_num);
- }
if (has_fp_attr(n)) {
const sparc_fp_attr_t *attr = get_sparc_fp_attr_const(n);
ir_fprintf(F, "fp_mode: %+F\n", attr->fp_mode);
*/
static void init_sparc_attributes(ir_node *node, arch_irn_flags_t flags,
const arch_register_req_t **in_reqs,
- const be_execution_unit_t ***execution_units,
int n_res)
{
ir_graph *irg = get_irn_irg(node);
struct obstack *obst = get_irg_obstack(irg);
backend_info_t *info;
- (void) execution_units;
arch_set_irn_flags(node, flags);
arch_set_irn_register_reqs_in(node, in_reqs);
attr->dest_mode = dest_mode;
}
-static void init_sparc_switch_jmp_attributes(ir_node *res, long default_pn,
- ir_entity *jump_table)
+static void init_sparc_switch_jmp_attributes(ir_node *node,
+ const ir_switch_table *table,
+ ir_entity *table_entity)
{
- sparc_switch_jmp_attr_t *attr = get_sparc_switch_jmp_attr(res);
- attr->default_proj_num = default_pn;
- attr->jump_table = jump_table;
+ unsigned n_outs = arch_get_irn_n_outs(node);
+ unsigned o;
+
+ sparc_switch_jmp_attr_t *attr = get_sparc_switch_jmp_attr(node);
+ attr->table = table;
+ attr->table_entity = table_entity;
+
+ for (o = 0; o < n_outs; ++o) {
+ arch_set_irn_register_req_out(node, o, arch_no_register_req);
+ }
}
/**
|| attr_a->is_unsigned != attr_b->is_unsigned;
}
-static int cmp_attr_sparc_switch_jmp(const ir_node *a, const ir_node *b)
-{
- const sparc_switch_jmp_attr_t *attr_a = get_sparc_switch_jmp_attr_const(a);
- const sparc_switch_jmp_attr_t *attr_b = get_sparc_switch_jmp_attr_const(b);
-
- if (cmp_attr_sparc(a, b))
- return 1;
-
- return attr_a->default_proj_num != attr_b->default_proj_num;
-}
-
static int cmp_attr_sparc_fp(const ir_node *a, const ir_node *b)
{
const sparc_fp_attr_t *attr_a = get_sparc_fp_attr_const(a);