projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Do not mark the transformed as visited. It makes no sense at all.
[libfirm]
/
ir
/
be
/
belive.c
diff --git
a/ir/be/belive.c
b/ir/be/belive.c
index
a2e400e
..
200b118
100644
(file)
--- a/
ir/be/belive.c
+++ b/
ir/be/belive.c
@@
-28,6
+28,9
@@
#include "config.h"
#endif
#include "config.h"
#endif
+/* statev is expensive here, only enable when needed */
+#define DISABLE_STATEV
+
#include "impl.h"
#include "iredges_t.h"
#include "irgwalk.h"
#include "impl.h"
#include "iredges_t.h"
#include "irgwalk.h"
@@
-525,7
+528,7
@@
static void compute_liveness(be_lv_t *lv)
/*
* inserting the variables sorted by their ID is probably
* more efficient since the binary sorted set insertion
/*
* inserting the variables sorted by their ID is probably
* more efficient since the binary sorted set insertion
- * will not need to move aroun
f
the data.
+ * will not need to move aroun
d
the data.
* However, if sorting the variables a priori pays off
* needs to be checked, hence the define.
*/
* However, if sorting the variables a priori pays off
* needs to be checked, hence the define.
*/
@@
-582,9
+585,8
@@
void be_liveness_invalidate(be_lv_t *lv)
/* Compute the inter block liveness for a graph. */
be_lv_t *be_liveness(const be_irg_t *birg)
{
/* Compute the inter block liveness for a graph. */
be_lv_t *be_liveness(const be_irg_t *birg)
{
- be_lv_t *lv =
xmalloc(sizeof(lv[0])
);
+ be_lv_t *lv =
XMALLOCZ(be_lv_t
);
- memset(lv, 0, sizeof(lv[0]));
lv->irg = be_get_birg_irg(birg);
lv->birg = birg;
#ifdef USE_LIVE_CHK
lv->irg = be_get_birg_irg(birg);
lv->birg = birg;
#ifdef USE_LIVE_CHK
@@
-620,7
+622,11
@@
void be_liveness_recompute(be_lv_t *lv)
void be_liveness_free(be_lv_t *lv)
{
be_liveness_invalidate(lv);
void be_liveness_free(be_lv_t *lv)
{
be_liveness_invalidate(lv);
- free(lv);
+#ifdef USE_LIVE_CHK
+ lv_chk_free(lv->lvc);
+ dfs_free(lv->dfs);
+#endif
+ xfree(lv);
}
void be_liveness_remove(be_lv_t *lv, const ir_node *irn)
}
void be_liveness_remove(be_lv_t *lv, const ir_node *irn)
@@
-804,9
+810,7
@@
void be_liveness_transfer(const arch_env_t *arch_env,
ir_nodeset_remove(nodeset, proj);
}
}
ir_nodeset_remove(nodeset, proj);
}
}
- }
-
- if (arch_irn_consider_in_reg_alloc(arch_env, cls, node)) {
+ } else if (arch_irn_consider_in_reg_alloc(arch_env, cls, node)) {
ir_nodeset_remove(nodeset, node);
}
ir_nodeset_remove(nodeset, node);
}