projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use be_put_ignore_regs() instead of duplicating its logic.
[libfirm]
/
ir
/
be
/
bearch.c
diff --git
a/ir/be/bearch.c
b/ir/be/bearch.c
index
71e703d
..
942e7f5
100644
(file)
--- a/
ir/be/bearch.c
+++ b/
ir/be/bearch.c
@@
-42,23
+42,25
@@
#include "irprintf.h"
/* Initialize the architecture environment struct. */
#include "irprintf.h"
/* Initialize the architecture environment struct. */
-arch_env_t *arch_env_init(
arch_env_t *env,
const arch_isa_if_t *isa_if, FILE *file_handle, be_main_env_t *main_env)
+arch_env_t *arch_env_init(const arch_isa_if_t *isa_if, FILE *file_handle, be_main_env_t *main_env)
{
{
- memset(env, 0, sizeof(*env));
- env->isa = isa_if->init(file_handle);
- env->isa->main_env = main_env;
- return env;
+ arch_env_t *arch_env = isa_if->init(file_handle);
+ arch_env->main_env = main_env;
+ return arch_env;
}
}
-int arch_register_class_put(const arch_register_class_t *cls, bitset_t *bs)
+/**
+ * Put all registers in a class into a bitset.
+ * @param cls The class.
+ * @param bs The bitset.
+ * @return The number of registers in the class.
+ */
+static int arch_register_class_put(const arch_register_class_t *cls, bitset_t *bs)
{
{
- if(bs) {
- int i, n;
- for(i = 0, n = cls->n_regs; i < n; ++i)
- bitset_set(bs, i);
- }
-
- return cls->n_regs;
+ int i, n = cls->n_regs;
+ for (i = n - 1; i >= 0; --i)
+ bitset_set(bs, i);
+ return n;
}
/**
}
/**
@@
-94,31
+96,31
@@
const arch_register_req_t *arch_get_register_req(const arch_env_t *env,
const ir_node *irn, int pos)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
const ir_node *irn, int pos)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- return ops->get_irn_reg_req(
ops,
irn, pos);
+ return ops->get_irn_reg_req(irn, pos);
}
void arch_set_frame_offset(const arch_env_t *env, ir_node *irn, int offset)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
void arch_set_frame_offset(const arch_env_t *env, ir_node *irn, int offset)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- ops->set_frame_offset(
ops,
irn, offset);
+ ops->set_frame_offset(irn, offset);
}
ir_entity *arch_get_frame_entity(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
ir_entity *arch_get_frame_entity(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- return ops->get_frame_entity(
ops,
irn);
+ return ops->get_frame_entity(irn);
}
void arch_set_frame_entity(const arch_env_t *env, ir_node *irn, ir_entity *ent)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
void arch_set_frame_entity(const arch_env_t *env, ir_node *irn, ir_entity *ent)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- ops->set_frame_entity(
ops,
irn, ent);
+ ops->set_frame_entity(irn, ent);
}
int arch_get_sp_bias(const arch_env_t *env, ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
int arch_get_sp_bias(const arch_env_t *env, ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- return ops->get_sp_bias(
ops,
irn);
+ return ops->get_sp_bias(irn);
}
arch_inverse_t *arch_get_inverse(const arch_env_t *env, const ir_node *irn, int i, arch_inverse_t *inverse, struct obstack *obstack)
}
arch_inverse_t *arch_get_inverse(const arch_env_t *env, const ir_node *irn, int i, arch_inverse_t *inverse, struct obstack *obstack)
@@
-126,7
+128,7
@@
arch_inverse_t *arch_get_inverse(const arch_env_t *env, const ir_node *irn, int
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->get_inverse) {
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->get_inverse) {
- return ops->get_inverse(
ops,
irn, i, inverse, obstack);
+ return ops->get_inverse(irn, i, inverse, obstack);
} else {
return NULL;
}
} else {
return NULL;
}
@@
-136,7
+138,7
@@
int arch_possible_memory_operand(const arch_env_t *env, const ir_node *irn, unsi
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->possible_memory_operand) {
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->possible_memory_operand) {
- return ops->possible_memory_operand(
ops,
irn, i);
+ return ops->possible_memory_operand(irn, i);
} else {
return 0;
}
} else {
return 0;
}
@@
-146,7
+148,7
@@
void arch_perform_memory_operand(const arch_env_t *env, ir_node *irn, ir_node *s
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->perform_memory_operand) {
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->perform_memory_operand) {
- ops->perform_memory_operand(
ops,
irn, spill, i);
+ ops->perform_memory_operand(irn, spill, i);
} else {
return;
}
} else {
return;
}
@@
-157,7
+159,7
@@
int arch_get_op_estimated_cost(const arch_env_t *env, const ir_node *irn)
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->get_op_estimated_cost) {
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->get_op_estimated_cost) {
- return ops->get_op_estimated_cost(
ops,
irn);
+ return ops->get_op_estimated_cost(irn);
} else {
return 1;
}
} else {
return 1;
}
@@
-168,7
+170,7
@@
int arch_is_possible_memory_operand(const arch_env_t *env, const ir_node *irn, i
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->possible_memory_operand) {
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
if(ops->possible_memory_operand) {
- return ops->possible_memory_operand(
ops,
irn, i);
+ return ops->possible_memory_operand(irn, i);
} else {
return 0;
}
} else {
return 0;
}
@@
-177,7
+179,7
@@
int arch_is_possible_memory_operand(const arch_env_t *env, const ir_node *irn, i
int arch_get_allocatable_regs(const arch_env_t *env, const ir_node *irn, int pos, bitset_t *bs)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
int arch_get_allocatable_regs(const arch_env_t *env, const ir_node *irn, int pos, bitset_t *bs)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- const arch_register_req_t *req = ops->get_irn_reg_req(
ops,
irn, pos);
+ const arch_register_req_t *req = ops->get_irn_reg_req(irn, pos);
if(req->type == arch_register_req_type_none) {
bitset_clear_all(bs);
if(req->type == arch_register_req_type_none) {
bitset_clear_all(bs);
@@
-224,7
+226,7
@@
int arch_is_register_operand(const arch_env_t *env,
const ir_node *irn, int pos)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
const ir_node *irn, int pos)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- const arch_register_req_t *req = ops->get_irn_reg_req(
ops,
irn, pos);
+ const arch_register_req_t *req = ops->get_irn_reg_req(irn, pos);
return req != NULL;
}
return req != NULL;
}
@@
-251,7
+253,7
@@
const arch_register_class_t *
arch_get_irn_reg_class(const arch_env_t *env, const ir_node *irn, int pos)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
arch_get_irn_reg_class(const arch_env_t *env, const ir_node *irn, int pos)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- const arch_register_req_t *req = ops->get_irn_reg_req(
ops,
irn, pos);
+ const arch_register_req_t *req = ops->get_irn_reg_req(irn, pos);
assert(req->type != arch_register_req_type_none || req->cls == NULL);
assert(req->type != arch_register_req_type_none || req->cls == NULL);
@@
-262,26
+264,26
@@
extern const arch_register_t *
arch_get_irn_register(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
arch_get_irn_register(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- return ops->get_irn_reg(
ops,
irn);
+ return ops->get_irn_reg(irn);
}
extern void arch_set_irn_register(const arch_env_t *env,
ir_node *irn, const arch_register_t *reg)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
extern void arch_set_irn_register(const arch_env_t *env,
ir_node *irn, const arch_register_t *reg)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- ops->set_irn_reg(
ops,
irn, reg);
+ ops->set_irn_reg(irn, reg);
}
extern arch_irn_class_t arch_irn_classify(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
extern arch_irn_class_t arch_irn_classify(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- return ops->classify(
ops,
irn);
+ return ops->classify(irn);
}
extern arch_irn_flags_t arch_irn_get_flags(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
extern arch_irn_flags_t arch_irn_get_flags(const arch_env_t *env, const ir_node *irn)
{
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
- return ops->get_flags(
ops,
irn);
+ return ops->get_flags(irn);
}
extern const char *arch_irn_flag_str(arch_irn_flags_t fl)
}
extern const char *arch_irn_flag_str(arch_irn_flags_t fl)
@@
-333,7
+335,7
@@
extern char *arch_register_req_format(char *buf, size_t len,
}
}
}
}
- if
(arch_register_req_is(req, should
_be_different)) {
+ if
(arch_register_req_is(req, must
_be_different)) {
const unsigned other = req->other_different;
int i;
const unsigned other = req->other_different;
int i;