On Tue, Apr 18, 2017 at 10:39:30AM +0000, Bin Cheng wrote: > -find_depends (tree *expr_p, int *ws ATTRIBUTE_UNUSED, void *data) > +find_inv_vars_cb (tree *expr_p, int *ws ATTRIBUTE_UNUSED, void *data) > { > - bitmap *inv_vars = (bitmap *) data; > + struct walk_tree_data *wdata = (struct walk_tree_data*) data; > struct version_info *info; > > if (TREE_CODE (*expr_p) != SSA_NAME) > return NULL_TREE; > - info = name_info (fd_ivopts_data, *expr_p); > > + info = name_info (wdata->idata, *expr_p); > if (!info->inv_id || info->has_nonlin_use) > return NULL_TREE; > > - if (!*inv_vars) > - *inv_vars = BITMAP_ALLOC (NULL); > - bitmap_set_bit (*inv_vars, info->inv_id); > + if (!*wdata->inv_vars) > + *wdata->inv_vars = BITMAP_ALLOC (NULL);
Given below this seems to be dead and inv_vars could just be a bitmap. > +find_inv_vars (struct ivopts_data *data, tree *expr_p, bitmap *inv_vars) > +{ > + struct walk_tree_data wdata; > + > + if (!inv_vars) > + return; > + > + wdata.idata = data; > + wdata.inv_vars = inv_vars; > + walk_tree (expr_p, find_inv_vars_cb, &wdata, NULL); given this it looks like the null check of inv_vars in find_inv_vars_cb is unnecessary because inv_vars must be nonnull to call walk_tree(). Thanks Trev