- tarval *new_bits_set = get_tarval_bad();
- tarval *new_bits_not_set = get_tarval_bad();
- tarval *new_range_bottom = get_tarval_bad();
- tarval *new_range_top = get_tarval_bad();
+ 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 = 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);
+ attr->range_bottom = get_tarval_top();
+ attr->range_top = get_tarval_top();
+
+ ir_nodemap_insert(&info->infos, node, attr);
+ }
+ return attr;
+}
+
+vrp_attr *vrp_get_info(const ir_node *node)
+{
+ ir_graph *irg = get_irn_irg(node);
+ if (irg->vrp.infos.data == NULL)
+ return NULL;
+ return ir_nodemap_get(vrp_attr, &irg->vrp.infos, node);
+}
+
+static int vrp_update_node(ir_vrp_info *info, ir_node *node)
+{
+ ir_tarval *new_bits_set = get_tarval_bad();
+ ir_tarval *new_bits_not_set = get_tarval_bad();
+ ir_tarval *new_range_bottom = get_tarval_bad();
+ ir_tarval *new_range_top = get_tarval_bad();