On Tue, Apr 18, 2017 at 01:58:43PM +0100, Bin.Cheng wrote: > On Tue, Apr 18, 2017 at 1:20 PM, Trevor Saunders <tbsau...@tbsaunde.org> > wrote: > > 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(). > Hmm, this check is for bitmap* pointer, the one in call back function > is for bitmap pointer, right?
ah yes, you can pass a pointer to a bitmap that points to null in here and then have a bitmap allocated. thanks Trev > > Thanks, > bin > > > > Thanks > > > > Trev