/* Post reload partially redundant load elimination
- Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010
+ Copyright (C) 2004, 2005, 2006, 2007, 2008, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
#include "coretypes.h"
#include "tm.h"
#include "diagnostic-core.h"
-#include "toplev.h"
#include "rtl.h"
#include "tree.h"
if (! MEM_P (dest))
return;
- if (true_dependence (dest, GET_MODE (dest), mem_op,
- rtx_addr_varies_p))
+ if (true_dependence (dest, GET_MODE (dest), mem_op))
mems_conflict_p = 1;
}
\f
if ((pred->flags & EDGE_ABNORMAL) && EDGE_CRITICAL_P (pred))
return false;
+ if ((pred->flags & EDGE_ABNORMAL_CALL) && cfun->has_nonlocal_label)
+ return false;
+
if (JUMP_TABLE_DATA_P (BB_END (pred->src)))
return false;
}
discover additional redundancies, so mark it for later deletion. */
for (a_occr = get_bb_avail_insn (bb, expr->avail_occr);
a_occr && (a_occr->insn != insn);
- a_occr = get_bb_avail_insn (bb, a_occr->next));
+ a_occr = get_bb_avail_insn (bb, a_occr->next))
+ ;
if (!a_occr)
{
fprintf (dump_file, "insns deleted: %d\n", stats.insns_deleted);
fprintf (dump_file, "\n\n");
}
+
+ statistics_counter_event (cfun, "copies inserted",
+ stats.copies_inserted);
+ statistics_counter_event (cfun, "moves inserted",
+ stats.moves_inserted);
+ statistics_counter_event (cfun, "insns deleted",
+ stats.insns_deleted);
}
/* We are finished with alias. */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func | TODO_verify_rtl_sharing
+ TODO_verify_rtl_sharing
| TODO_verify_flow | TODO_ggc_collect /* todo_flags_finish */
}
};
-