projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
updated be_AddSP semantics
[libfirm]
/
ir
/
be
/
bespill.h
diff --git
a/ir/be/bespill.h
b/ir/be/bespill.h
index
0273f31
..
563a9aa
100644
(file)
--- a/
ir/be/bespill.h
+++ b/
ir/be/bespill.h
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 1995-200
7
University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-200
8
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* This file is part of libFirm.
*
@@
-48,6
+48,11
@@
void be_delete_spill_env(spill_env_t *senv);
ir_node *be_get_end_of_block_insertion_point(const ir_node *block);
ir_node *be_get_end_of_block_insertion_point(const ir_node *block);
+/**
+ * marks a point until which a node must be spilled
+ */
+void be_add_spill(spill_env_t *senv, ir_node *to_spill, ir_node *before);
+
/**
* Inserts a new entry into the list of reloads to place (the real nodes will
* be created when be_insert_spills_reloads is run). You don't have to
/**
* Inserts a new entry into the list of reloads to place (the real nodes will
* be created when be_insert_spills_reloads is run). You don't have to
@@
-65,6
+70,9
@@
ir_node *be_get_end_of_block_insertion_point(const ir_node *block);
void be_add_reload(spill_env_t *senv, ir_node *to_spill, ir_node *before,
const arch_register_class_t *reload_cls, int allow_remat);
void be_add_reload(spill_env_t *senv, ir_node *to_spill, ir_node *before,
const arch_register_class_t *reload_cls, int allow_remat);
+void be_add_reload2(spill_env_t *senv, ir_node *to_spill, ir_node *before, ir_node *can_spill_after,
+ const arch_register_class_t *reload_cls, int allow_remat);
+
/**
* Add a reload at the end of a block.
* Similar to be_add_reload_on_edge().
/**
* Add a reload at the end of a block.
* Similar to be_add_reload_on_edge().
@@
-109,7
+117,7
@@
void be_spill_phi(spill_env_t *env, ir_node *node);
* instructions. The value is weighted by the estimated execution frequency of
* the spill.
*/
* instructions. The value is weighted by the estimated execution frequency of
* the spill.
*/
-double be_get_spill_costs(spill_env_t *env, ir_node *to_spill, ir_node *
after
);
+double be_get_spill_costs(spill_env_t *env, ir_node *to_spill, ir_node *
before
);
/**
* Returns the estimated costs if a node would get reloaded at a specific place
/**
* Returns the estimated costs if a node would get reloaded at a specific place
@@
-120,6
+128,10
@@
double be_get_spill_costs(spill_env_t *env, ir_node *to_spill, ir_node *after);
double be_get_reload_costs(spill_env_t *env, ir_node *to_spill,
ir_node *before);
double be_get_reload_costs(spill_env_t *env, ir_node *to_spill,
ir_node *before);
+unsigned be_get_reload_costs_no_weight(spill_env_t *env, const ir_node *to_spill,
+ const ir_node *before);
+
+
/**
* Analog to be_get_reload_costs but returns the cost if the reload would be
* placed "on an edge" between 2 blocks
/**
* Analog to be_get_reload_costs but returns the cost if the reload would be
* placed "on an edge" between 2 blocks