constified is_Phi
[libfirm] / ir / ana / callgraph.c
index 927c5a7..ed0b279 100644 (file)
@@ -9,8 +9,16 @@
  * Copyright:   (c) 2004 Universität Karlsruhe
  * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
  */
-
+#ifdef HAVE_CONFIG_H
 #include "config.h"
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <stdlib.h>
+
 #include "callgraph.h"
 
 #include "irloop_t.h"
@@ -146,10 +154,9 @@ static void ana_Call(ir_node *n, void *env) {
   n_callees = get_Call_n_callees(n);
   for (i = 0; i < n_callees; ++i) {
     entity *callee_e = get_Call_callee(n, i);
-    if (callee_e != unknown_entity) {  /* For unknown caller */
-      ir_graph *callee = get_entity_irg(callee_e);
-      pset_insert((pset *)callee->callers, irg, HASH_ADDRESS(irg));
-
+    ir_graph *callee = get_entity_irg(callee_e);
+    if (callee) {  /* For unknown caller */
+      pset_insert((pset *)callee->callers, irg, (unsigned)irg >> 3);
       ana_entry buf = { callee, NULL, 0};
       ana_entry *found = pset_find((pset *)irg->callees, &buf, HASH_ADDRESS(callee));
       if (found) {  /* add Call node to list, compute new nesting. */
@@ -240,8 +247,8 @@ void free_callgraph(void) {
     ir_graph *irg = get_irp_irg(i);
     if (irg->callees) DEL_ARR_F(irg->callees);
     if (irg->callers) DEL_ARR_F(irg->callers);
-    if (irg->callee_isbe) DEL_ARR_F(irg->callee_isbe);
-    if (irg->caller_isbe) DEL_ARR_F(irg->caller_isbe);
+    if (irg->callee_isbe) free(irg->callee_isbe);
+    if (irg->caller_isbe) free(irg->caller_isbe);
     irg->callees = NULL;
     irg->callers = NULL;
     irg->callee_isbe = NULL;