* Interprocedural analysis to estimate the calling relation.
*
* This analysis computes all entities representing methods that
* Interprocedural analysis to estimate the calling relation.
*
* This analysis computes all entities representing methods that
* methods that are 'free', i.e., their adress is handled by
* the program directly, or they are visible external.
*/
* methods that are 'free', i.e., their adress is handled by
* the program directly, or they are visible external.
*/
collect_impls(get_entity_overwrittenby(method, i), set, size, open);
}
collect_impls(get_entity_overwrittenby(method, i), set, size, open);
}
-/** Alle Methoden bestimmen, die die übergebene Methode überschreiben
- * (und implementieren). In der zurückgegebenen Reihung kommt jede
- * Methode nur einmal vor. Der Wert 'NULL' steht für unbekannte
- * (externe) Methoden. Die zurückgegebene Reihung muß vom Aufrufer
- * wieder freigegeben werden (siehe "DEL_ARR_F"). Gibt es überhaupt
- * keine Methoden, die "method" überschreiben, so gibt die Methode
- * "NULL" zurück.
+/** Alle Methoden bestimmen, die die �bergebene Methode �berschreiben
+ * (und implementieren). In der zur�ckgegebenen Reihung kommt jede
+ * Methode nur einmal vor. Der Wert 'NULL' steht f�r unbekannte
+ * (externe) Methoden. Die zur�ckgegebene Reihung mu� vom Aufrufer
+ * wieder freigegeben werden (siehe "DEL_ARR_F"). Gibt es �berhaupt
+ * keine Methoden, die "method" �berschreiben, so gibt die Methode
+ * "NULL" zur�ck.
* op_Tuple oder ein Knoten, der in "free_ana_walker" behandelt
* wird. */
ir_node * pred = get_Proj_pred(node);
* op_Tuple oder ein Knoten, der in "free_ana_walker" behandelt
* wird. */
ir_node * pred = get_Proj_pred(node);
free_mark_proj(get_Tuple_pred(pred, get_Proj_proj(node)), n, set);
} else {
/* nothing: da in "free_ana_walker" behandelt. */
free_mark_proj(get_Tuple_pred(pred, get_Proj_proj(node)), n, set);
} else {
/* nothing: da in "free_ana_walker" behandelt. */
* jemand das Gegenteil implementiert. */
set_irn_link(node, MARK);
for (i = get_irn_arity(node) - 1; i >= 0; --i) {
* jemand das Gegenteil implementiert. */
set_irn_link(node, MARK);
for (i = get_irn_arity(node) - 1; i >= 0; --i) {
for (i = 0; i < initializer->compound.n_initializers; ++i) {
ir_initializer_t *sub_initializer
= initializer->compound.initializers[i];
for (i = 0; i < initializer->compound.n_initializers; ++i) {
ir_initializer_t *sub_initializer
= initializer->compound.initializers[i];
* returns a list of 'free' methods, i.e., the methods that can be called
* from external or via function pointers.
*
* returns a list of 'free' methods, i.e., the methods that can be called
* from external or via function pointers.
*
* umgewandelt worden sein, d.h. SymConst-Operationen verweisen immer
* auf eine echt externe Methode.
*/
* umgewandelt worden sein, d.h. SymConst-Operationen verweisen immer
* auf eine echt externe Methode.
*/
- set_using_irn_link(irg);
- /* Find all method entities that gets "visible" trough this graphs,
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
+ /* Find all method entities that gets "visible" through this graphs,
- irg_walk_graph(irg, NULL, free_ana_walker, free_set);
- clear_using_irn_link(irg);
+ irg_walk_graph(irg, firm_clear_link, free_ana_walker, free_set);
+ ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
/* Finally, transform the set into an array. */
*length = eset_count(free_set);
/* Finally, transform the set into an array. */
*length = eset_count(free_set);
case iro_Proj: {
/* proj_proj: in einem "sinnvollen" Graphen kommt jetzt ein
* op_Tuple oder ein Knoten, der eine "freie Methode"
case iro_Proj: {
/* proj_proj: in einem "sinnvollen" Graphen kommt jetzt ein
* op_Tuple oder ein Knoten, der eine "freie Methode"
- case iro_Psi:
- for (i = get_Psi_n_conds(node) - 1; i >= 0; --i) {
- callee_ana_node(get_Psi_val(node, i), methods);
- }
- callee_ana_node(get_Psi_default(node), methods);
- break;
-