projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- Bugfix: Barrier nodes have an effect like a Keep for unused inputs. So we
[libfirm]
/
ir
/
be
/
beirgmod.c
diff --git
a/ir/be/beirgmod.c
b/ir/be/beirgmod.c
index
393ba58
..
0005b7b
100644
(file)
--- a/
ir/be/beirgmod.c
+++ b/
ir/be/beirgmod.c
@@
-57,14
+57,14
@@
#include "be_t.h"
#include "bechordal_t.h"
#include "be_t.h"
#include "bechordal_t.h"
-#include "bearch
_t
.h"
-#include "besched
_t
.h"
+#include "bearch.h"
+#include "besched.h"
#include "belive_t.h"
#include "belive_t.h"
-#include "benode
_t
.h"
+#include "benode.h"
#include "beutil.h"
#include "beinsn_t.h"
#include "bessaconstr.h"
#include "beutil.h"
#include "beinsn_t.h"
#include "bessaconstr.h"
-#include "beirg
_t
.h"
+#include "beirg.h"
#include "beirgmod.h"
#include "bemodule.h"
#include "beirgmod.h"
#include "bemodule.h"
@@
-97,7
+97,7
@@
ir_node *insert_Perm_after(be_irg_t *birg,
be_liveness_nodes_live_at(lv, cls, pos, &live);
n = ir_nodeset_size(&live);
be_liveness_nodes_live_at(lv, cls, pos, &live);
n = ir_nodeset_size(&live);
- if(n == 0) {
+ if
(n == 0) {
ir_nodeset_destroy(&live);
return NULL;
}
ir_nodeset_destroy(&live);
return NULL;
}
@@
-124,7
+124,7
@@
ir_node *insert_Perm_after(be_irg_t *birg,
be_ssa_construction_env_t senv;
ir_mode *mode = get_irn_mode(perm_op);
be_ssa_construction_env_t senv;
ir_mode *mode = get_irn_mode(perm_op);
- ir_node *proj = new_r_Proj(
bl,
perm, mode, i);
+ ir_node *proj = new_r_Proj(perm, mode, i);
arch_set_irn_register(proj, reg);
curr = proj;
arch_set_irn_register(proj, reg);
curr = proj;
@@
-164,7
+164,8
@@
static void remove_empty_block(ir_node *block)
goto check_preds;
sched_foreach(block, node) {
goto check_preds;
sched_foreach(block, node) {
- if (! is_Jmp(node))
+ if (! is_Jmp(node)
+ && !(arch_irn_get_flags(node) & arch_irn_flags_simple_jump))
goto check_preds;
if (jump != NULL) {
/* we should never have 2 jumps in a block */
goto check_preds;
if (jump != NULL) {
/* we should never have 2 jumps in a block */
@@
-242,7
+243,7
@@
static void remove_empty_block(ir_node *block)
check_preds:
arity = get_Block_n_cfgpreds(block);
check_preds:
arity = get_Block_n_cfgpreds(block);
- for(i = 0; i < arity; ++i) {
+ for
(i = 0; i < arity; ++i) {
ir_node *pred = get_Block_cfgpred_block(block, i);
remove_empty_block(pred);
}
ir_node *pred = get_Block_cfgpred_block(block, i);
remove_empty_block(pred);
}
@@
-279,9
+280,8
@@
int be_remove_empty_blocks(ir_graph *irg)
return blocks_removed;
}
return blocks_removed;
}
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_irgmod);
void be_init_irgmod(void)
{
FIRM_DBG_REGISTER(dbg, "firm.be.irgmod");
}
void be_init_irgmod(void)
{
FIRM_DBG_REGISTER(dbg, "firm.be.irgmod");
}
-
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_irgmod);