projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Support dtor sections on Mach-O.
[libfirm]
/
ir
/
ir
/
irnode.c
diff --git
a/ir/ir/irnode.c
b/ir/ir/irnode.c
index
6d0ffee
..
c61f32a
100644
(file)
--- a/
ir/ir/irnode.c
+++ b/
ir/ir/irnode.c
@@
-233,7
+233,7
@@
ir_node **get_irn_in(const ir_node *node) {
void set_irn_in(ir_node *node, int arity, ir_node **in) {
int i;
ir_node *** pOld_in;
void set_irn_in(ir_node *node, int arity, ir_node **in) {
int i;
ir_node *** pOld_in;
- ir_graph *irg =
current_ir_graph
;
+ ir_graph *irg =
get_irn_irg(node)
;
assert(node);
#ifdef INTERPROCEDURAL_VIEW
assert(node);
#ifdef INTERPROCEDURAL_VIEW
@@
-818,10
+818,11
@@
ir_entity *create_Block_entity(ir_node *block) {
glob = get_glob_type();
entity = new_entity(glob, id_unique("block_%u"), get_code_type());
glob = get_glob_type();
entity = new_entity(glob, id_unique("block_%u"), get_code_type());
+ set_entity_visibility(entity, ir_visibility_local);
+ set_entity_linkage(entity, IR_LINKAGE_CONSTANT);
nr = get_irp_next_label_nr();
set_entity_label(entity, nr);
set_entity_compiler_generated(entity, 1);
nr = get_irp_next_label_nr();
set_entity_label(entity, nr);
set_entity_compiler_generated(entity, 1);
- set_entity_allocation(entity, allocation_static);
block->attr.block.entity = entity;
}
block->attr.block.entity = entity;
}
@@
-2782,6
+2783,10
@@
int (is_irn_machine_user)(const ir_node *node, unsigned n) {
return _is_irn_machine_user(node, n);
}
return _is_irn_machine_user(node, n);
}
+/* Returns non-zero for nodes that are CSE neutral to its users. */
+int (is_irn_cse_neutral)(const ir_node *node) {
+ return _is_irn_cse_neutral(node);
+}
/* Gets the string representation of the jump prediction .*/
const char *get_cond_jmp_predicate_name(cond_jmp_predicate pred) {
/* Gets the string representation of the jump prediction .*/
const char *get_cond_jmp_predicate_name(cond_jmp_predicate pred) {
@@
-2922,7
+2927,11
@@
unsigned firm_default_hash(const ir_node *node) {
/* consider all in nodes... except the block if not a control flow. */
for (i = is_cfop(node) ? -1 : 0; i < irn_arity; ++i) {
/* consider all in nodes... except the block if not a control flow. */
for (i = is_cfop(node) ? -1 : 0; i < irn_arity; ++i) {
- h = 9*h + HASH_PTR(get_irn_intra_n(node, i));
+ ir_node *pred = get_irn_intra_n(node, i);
+ if (is_irn_cse_neutral(pred))
+ h *= 9;
+ else
+ h = 9*h + HASH_PTR(pred);
}
/* ...mode,... */
}
/* ...mode,... */