static void gen_shrink_wrap_conditions (gimple bi_call, vec<gimple> conds, unsigned int *nconds) { gimple call; tree fn; enum built_in_function fnc; gcc_assert (nconds && conds.exists ()); gcc_assert (conds.length () == 0); gcc_assert (is_gimple_call (bi_call)); call = bi_call; fn = gimple_call_fndecl (call); gcc_assert (fn && DECL_BUILT_IN (fn)); fnc = DECL_FUNCTION_CODE (fn); *nconds = 0; if (fnc == BUILT_IN_POW) gen_conditions_for_pow (call, conds, nconds); else { tree arg; inp_domain domain = get_no_error_domain (fnc); *nconds = 0; arg = gimple_call_arg (bi_call, 0); gen_conditions_for_domain (arg, domain, conds, nconds); } return; }
static inline void set_function_state (struct cgraph_node *node, funct_state s) { if (!funct_state_vec.exists () || funct_state_vec.length () <= (unsigned int)node->uid) funct_state_vec.safe_grow_cleared (node->uid + 1); funct_state_vec[node->uid] = s; }
static inline bool has_function_state (struct cgraph_node *node) { if (!funct_state_vec.exists () || funct_state_vec.length () <= (unsigned int)node->uid) return false; return funct_state_vec[node->uid] != NULL; }
static inline funct_state get_function_state (struct cgraph_node *node) { if (!funct_state_vec.exists () || funct_state_vec.length () <= (unsigned int)node->uid || !funct_state_vec[node->uid]) /* We might want to put correct previously_known state into varying. */ return &varying_state; return funct_state_vec[node->uid]; }
/* Release structures holding check information for current function. */ static void chkp_release_check_info (void) { unsigned int n, m; if (check_infos.exists ()) { for (n = 0; n < check_infos.length (); n++) { for (m = 0; m < check_infos[n].checks.length (); m++) if (check_infos[n].checks[m].addr.pol.exists ()) check_infos[n].checks[m].addr.pol.release (); check_infos[n].checks.release (); } check_infos.release (); } }
/* Initialize the per SSA_NAME value-handles array. Returns it. */ void threadedge_initialize_values (void) { gcc_assert (!ssa_name_values.exists ()); ssa_name_values.create (num_ssa_names); }