* @file
* @brief analyze graph to provide value range information
* @author Jonas Fietz
- * @version $Id$
*/
#include "config.h"
static vrp_attr *vrp_get_or_set_info(ir_vrp_info *info, const ir_node *node)
{
- vrp_attr *attr = ir_nodemap_get(&info->infos, node);
+ vrp_attr *attr = ir_nodemap_get(vrp_attr, &info->infos, node);
if (attr == NULL) {
ir_mode *mode = get_irn_mode(node);
assert(mode_is_int(mode));
- attr = obstack_alloc(&info->obst, sizeof(*attr));
- memset(attr, 0, sizeof(*attr));
+ attr = OALLOCZ(&info->obst, vrp_attr);
attr->range_type = VRP_UNDEFINED;
attr->bits_set = get_mode_null(mode);
attr->bits_not_set = get_mode_all_one(mode);
ir_graph *irg = get_irn_irg(node);
if (irg->vrp.infos.data == NULL)
return NULL;
- return (vrp_attr*) ir_nodemap_get(&irg->vrp.infos, node);
+ return ir_nodemap_get(vrp_attr, &irg->vrp.infos, node);
}
static int vrp_update_node(ir_vrp_info *info, ir_node *node)
/* Merge the newly calculated values with those that might already exist*/
if (new_bits_set != tarval_bad) {
new_bits_set = tarval_or(new_bits_set, vrp->bits_set);
- if (tarval_cmp(new_bits_set, vrp->bits_set) != ir_relation_equal) {
+ if (new_bits_set != vrp->bits_set) {
something_changed = 1;
vrp->bits_set = new_bits_set;
}
if (new_bits_not_set != tarval_bad) {
new_bits_not_set = tarval_and(new_bits_not_set, vrp->bits_not_set);
- if (tarval_cmp(new_bits_not_set, vrp->bits_not_set) != ir_relation_equal) {
+ if (new_bits_not_set != vrp->bits_not_set) {
something_changed = 1;
vrp->bits_not_set = new_bits_not_set;
}
vrp_update_node(env->info, n);
- assure_irg_outs(get_current_ir_graph());
+ assure_irg_outs(get_irn_irg(n));
for (i = get_irn_n_outs(n) - 1; i >=0; --i) {
ir_node *succ = get_irn_out(n, i);
if (bitset_is_set(env->visited, get_irn_idx(succ))) {
register_hook(hook_node_info, &dump_hook);
}
- env = obstack_alloc(&irg->vrp.obst, sizeof(*env));
+ env = OALLOCZ(&irg->vrp.obst, vrp_env_t);
env->workqueue = new_waitq();
env->info = info;