projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added CopyKeep
[libfirm]
/
ir
/
be
/
bemain.c
diff --git
a/ir/be/bemain.c
b/ir/be/bemain.c
index
bbf888b
..
17b486d
100644
(file)
--- a/
ir/be/bemain.c
+++ b/
ir/be/bemain.c
@@
-50,7
+50,7
@@
#include "becopystat.h"
#include "bessadestr.h"
#include "beabi.h"
#include "becopystat.h"
#include "bessadestr.h"
#include "beabi.h"
-
+#include "belower.h"
#define DUMP_INITIAL (1 << 0)
#define DUMP_ABI (1 << 1)
#define DUMP_INITIAL (1 << 0)
#define DUMP_ABI (1 << 1)
@@
-266,6
+266,9
@@
static void be_main_loop(FILE *file_handle)
/* create the code generator and generate code. */
prepare_graph(&birg);
/* create the code generator and generate code. */
prepare_graph(&birg);
+ /* some transformations need to be done before abi introduce */
+ arch_code_generator_before_abi(birg.cg);
+
/* implement the ABI conventions. */
birg.abi = be_abi_introduce(&birg);
dump(DUMP_ABI, irg, "-abi", dump_ir_block_graph);
/* implement the ABI conventions. */
birg.abi = be_abi_introduce(&birg);
dump(DUMP_ABI, irg, "-abi", dump_ir_block_graph);
@@
-287,9
+290,12
@@
static void be_main_loop(FILE *file_handle)
dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
dump(DUMP_PREPARED, irg, "-prepared", dump_ir_block_graph);
+ /* add Keeps for should_be_different constrained nodes */
+ assure_constraints(&birg);
+
/* Schedule the graphs. */
arch_code_generator_before_sched(birg.cg);
/* Schedule the graphs. */
arch_code_generator_before_sched(birg.cg);
- list_sched(
isa
, irg);
+ list_sched(
env.arch_env
, irg);
/* connect all stack modifying nodes together (see beabi.c) */
be_abi_fix_stack_nodes(birg.abi);
/* connect all stack modifying nodes together (see beabi.c) */
be_abi_fix_stack_nodes(birg.abi);
@@
-303,6
+309,7
@@
static void be_main_loop(FILE *file_handle)
ra->allocate(&birg);
dump(DUMP_RA, irg, "-ra", dump_ir_block_graph_sched);
ra->allocate(&birg);
dump(DUMP_RA, irg, "-ra", dump_ir_block_graph_sched);
+ arch_code_generator_after_ra(birg.cg);
be_abi_fix_stack_bias(birg.abi);
arch_code_generator_done(birg.cg);
be_abi_fix_stack_bias(birg.abi);
arch_code_generator_done(birg.cg);