X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fopt_polymorphy.c;h=a0902b70642c4dfee4bb5288ec3a5c01eb00dbdc;hb=6b124543aff56817fcfe6d5b5ff181ac5c790e73;hp=b8fa9efc3a3118473cdeaed4f08481fcf944eedf;hpb=0fbcef83aa6060534172bb13e71cdadb04428806;p=libfirm diff --git a/ir/opt/opt_polymorphy.c b/ir/opt/opt_polymorphy.c index b8fa9efc3..a0902b706 100644 --- a/ir/opt/opt_polymorphy.c +++ b/ir/opt/opt_polymorphy.c @@ -22,7 +22,7 @@ * @brief Optimize polymorphic Sel and Load nodes. * @author Goetz Lindenmaier, Michael Beck * @version $Id$ - * @summary + * @brief * This file subsumes optimization code from cgana. */ #include "config.h" @@ -53,8 +53,6 @@ ir_type *default_firm_get_Alloc(ir_node *n) { return NULL; } -typedef ir_type *(*get_Alloc_func)(ir_node *n); - /** The get_Alloc function */ static get_Alloc_func firm_get_Alloc = default_firm_get_Alloc; @@ -100,7 +98,8 @@ static ir_type *get_dynamic_type(ir_node *ptr) { /** * Check, if an entity is final, i.e. is not anymore overridden. */ -static int is_final_ent(ir_entity *ent) { +static int is_final_ent(ir_entity *ent) +{ if (is_entity_final(ent)) { /* not possible to override this entity. */ return 1; @@ -157,8 +156,6 @@ ir_node *transform_node_Sel(ir_node *node) { /* We know which method will be called, no dispatch necessary. */ called_ent = resolve_ent_polymorphy(dyn_tp, ent); - /* called_ent may not be description: has no Address/Const to Call! */ - assert(get_entity_peculiarity(called_ent) != peculiarity_description); rem_block = get_cur_block(); set_cur_block(get_nodes_block(node)); @@ -194,8 +191,7 @@ ir_node *transform_polymorph_Load(ir_node *load) { if (! is_Sel(field_ptr)) return load; ent = get_Sel_entity(field_ptr); - if ((get_entity_allocation(ent) != allocation_static) || - (get_entity_variability(ent) != variability_constant) ) + if ( !(get_entity_linkage(ent) & IR_LINKAGE_CONSTANT) ) return load; /* If the entity is a leave in the inheritance tree, @@ -212,8 +208,6 @@ ir_node *transform_polymorph_Load(ir_node *load) { /* We know which method will be called, no dispatch necessary. */ loaded_ent = resolve_ent_polymorphy(dyn_tp, ent); - /* called_ent may not be description: has no Address/Const to Call! */ - assert(get_entity_peculiarity(loaded_ent) != peculiarity_description); new_node = get_atomic_ent_value(loaded_ent); } }