* opcodes and the corresponding node constructors for the arm
* assembler irg.
* @author Oliver Richter, Tobias Gneist
- * @version $Id$
*/
#include "config.h"
#include "irprintf.h"
#include "xmalloc.h"
-#include "../bearch.h"
+#include "bearch.h"
#include "arm_nodes_attr.h"
#include "arm_new_nodes.h"
#include "arm_optimize.h"
-#include "../beabi.h"
+#include "beabi.h"
#include "bearch_arm_t.h"
-const char *arm_get_fpa_imm_name(long imm_value)
-{
- static const char *fpa_imm[] = {
- "0",
- "1",
- "2",
- "3",
- "4",
- "5",
- "10",
- "0.5"
- };
- return fpa_imm[imm_value];
-}
-
static bool arm_has_symconst_attr(const ir_node *node)
{
return is_arm_SymConst(node) || is_arm_FrameAddr(node) || is_arm_Bl(node);
* @param n the node to dump
* @param reason indicates which kind of information should be dumped
*/
-static void arm_dump_node(FILE *F, ir_node *n, dump_reason_t reason)
+static void arm_dump_node(FILE *F, const ir_node *n, dump_reason_t reason)
{
switch (reason) {
case dump_node_opcode_txt:
attr->relation = relation;
}
-int get_arm_SwitchJmp_n_projs(const ir_node *node)
-{
- const arm_SwitchJmp_attr_t *attr = get_arm_SwitchJmp_attr_const(node);
- return attr->n_projs;
-}
-
-void set_arm_SwitchJmp_n_projs(ir_node *node, int n_projs)
-{
- arm_SwitchJmp_attr_t *attr = get_arm_SwitchJmp_attr(node);
- attr->n_projs = n_projs;
-}
-
-long get_arm_SwitchJmp_default_proj_num(const ir_node *node)
-{
- const arm_SwitchJmp_attr_t *attr = get_arm_SwitchJmp_attr_const(node);
- return attr->default_proj_num;
-}
-
-void set_arm_SwitchJmp_default_proj_num(ir_node *node, long default_proj_num)
-{
- arm_SwitchJmp_attr_t *attr = get_arm_SwitchJmp_attr(node);
- attr->default_proj_num = default_proj_num;
-}
-
/* Set the ARM machine node attributes to default values. */
static void init_arm_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);
arm_attr_t *attr = get_arm_attr(node);
backend_info_t *info;
- (void) execution_units;
arch_set_irn_flags(node, flags);
arch_set_irn_register_reqs_in(node, in_reqs);
attr->size = size;
}
+static void init_arm_SwitchJmp_attributes(ir_node *res,
+ const ir_switch_table *table)
+{
+ unsigned n_outs = arch_get_irn_n_outs(res);
+ unsigned o;
+
+ arm_SwitchJmp_attr_t *attr = get_arm_SwitchJmp_attr(res);
+ attr->table = table;
+
+ for (o = 0; o < n_outs; ++o) {
+ arch_set_irn_register_req_out(res, o, arch_no_register_req);
+ }
+}
+
static int cmp_attr_arm(const ir_node *a, const ir_node *b)
{
(void) a;