Line 55... |
Line 55... |
/* Does all known instruction optimizations */
|
/* Does all known instruction optimizations */
|
void cuc_optimize (cuc_func *func)
|
void cuc_optimize (cuc_func *func)
|
{
|
{
|
int modified = 0;
|
int modified = 0;
|
log ("Optimizing.\n");
|
log ("Optimizing.\n");
|
insert_conditional_facts (func);
|
|
if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_COND_FACT");
|
|
do {
|
do {
|
modified = 0;
|
modified = 0;
|
if (optimize_cmovs (func)) {
|
if (optimize_cmovs (func)) {
|
if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_CMOVS");
|
if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_CMOVS");
|
modified = 1;
|
modified = 1;
|
}
|
}
|
|
if (cuc_debug) cuc_check (func);
|
if (optimize_tree (func)) {
|
if (optimize_tree (func)) {
|
if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_TREE1");
|
if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_TREE1");
|
modified = 1;
|
modified = 1;
|
}
|
}
|
if (remove_nops (func)) {
|
if (remove_nops (func)) {
|
if (cuc_debug >= 6) print_cuc_bb (func, "NO_NOPS");
|
if (cuc_debug >= 6) print_cuc_bb (func, "NO_NOPS");
|
modified = 1;
|
modified = 1;
|
}
|
}
|
|
if (cuc_debug) cuc_check (func);
|
if (remove_dead (func)) {
|
if (remove_dead (func)) {
|
if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_DEAD");
|
if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_DEAD");
|
modified = 1;
|
modified = 1;
|
}
|
}
|
|
if (cuc_debug) cuc_check (func);
|
if (cse (func)) {
|
if (cse (func)) {
|
log ("Common subexpression elimination.\n");
|
log ("Common subexpression elimination.\n");
|
if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_CSE");
|
if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_CSE");
|
modified = 1;
|
modified = 1;
|
}
|
}
|
|
if (cuc_debug) cuc_check (func);
|
if (optimize_bb (func)) {
|
if (optimize_bb (func)) {
|
if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_OPT_BB");
|
if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_OPT_BB");
|
modified = 1;
|
modified = 1;
|
}
|
}
|
|
if (cuc_debug) cuc_check (func);
|
if (remove_nops (func)) {
|
if (remove_nops (func)) {
|
if (cuc_debug >= 6) print_cuc_bb (func, "NO_NOPS");
|
if (cuc_debug >= 6) print_cuc_bb (func, "NO_NOPS");
|
modified = 1;
|
modified = 1;
|
}
|
}
|
if (remove_dead_bb (func)) {
|
if (remove_dead_bb (func)) {
|
Line 187... |
Line 190... |
reg_dep (func);
|
reg_dep (func);
|
|
|
log ("Detecting dependencies\n");
|
log ("Detecting dependencies\n");
|
if (cuc_debug >= 2) print_cuc_bb (func, "AFTER_REG_DEP");
|
if (cuc_debug >= 2) print_cuc_bb (func, "AFTER_REG_DEP");
|
cuc_optimize (func);
|
cuc_optimize (func);
|
|
if (cuc_debug) cuc_check (func);
|
|
insert_conditional_facts (func);
|
|
if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_COND_FACT");
|
|
if (cuc_debug) cuc_check (func);
|
|
cuc_optimize (func);
|
|
|
#if 0
|
#if 0
|
csm (func);
|
csm (func);
|
#endif
|
#endif
|
assert (saved = dup_func (func));
|
assert (saved = dup_func (func));
|