* @file
* @brief Procedure cloning.
* @author Beyhan Veliev, Michael Beck
- * @version $Id$
* @brief
*
* The purpose is first to find and analyze functions, that are called
*/
static unsigned hash_entry(const entry_t *entry)
{
- return HASH_PTR(entry->q.ent) ^ HASH_PTR(entry->q.tv) ^ (unsigned)(entry->q.pos * 9);
+ return hash_ptr(entry->q.ent) ^ hash_ptr(entry->q.tv) ^ (unsigned)(entry->q.pos * 9);
}
/**
n_params = get_Call_n_params(call);
- /* Beware: we cannot clone variadic parameters as well as the
+ /* TODO
+ * Beware: we cannot clone variadic parameters as well as the
* last non-variadic one, which might be needed for the va_start()
* magic
*/
if (is_Call(call)) {
call_ptr = get_Call_ptr(call);
- if (! is_Global(call_ptr))
+ if (! is_SymConst_addr_ent(call_ptr))
return;
- callee = get_Global_entity(call_ptr);
+ callee = get_SymConst_entity(call_ptr);
/* we don't know which function gets finally bound to a weak symbol */
if (get_entity_linkage(callee) & IR_LINKAGE_WEAK)
*/
void proc_cloning(float threshold)
{
- entry_t *entry = NULL, *p;
+ entry_t *p;
size_t i, n;
q_set hmap;
/* We iterate the set and arrange the element of the set in a list.
The elements are arranged dependent of their value descending.*/
if (hmap.map) {
- foreach_pset(hmap.map, entry_t*, entry) {
+ foreach_pset(hmap.map, entry_t, entry) {
entry->weight = calculate_weight(entry);
/*
#ifdef DEBUG_libfirm
/* Print some information about the list. */
DB((dbg, LEVEL_2, "-----------------\n"));
- for (entry = hmap.heavy_uses; entry; entry = entry->next) {
+ for (entry_t *entry = hmap.heavy_uses; entry; entry = entry->next) {
DB((dbg, LEVEL_2, "\nweight: is %f\n", entry->weight));
DB((dbg, LEVEL_2, "Call for Method %E\n", entry->q.ent));
DB((dbg, LEVEL_2, "Position %zu\n", entry->q.pos));
DB((dbg, LEVEL_2, "Value %T\n", entry->q.tv));
}
#endif
- entry = hmap.heavy_uses;
+ entry_t *const entry = hmap.heavy_uses;
if (entry) {
quadruple_t *qp = &entry->q;