GCC Middle and Back End API Reference
|
Go to the source code of this file.
|
inlinestatic |
This functions clears the iterator PTR, and marks it done. This is normally used to prevent warnings in the compile about might be uninitialized components.
References ssa_operand_iterator_d::done, ssa_operand_iterator_d::flags, ssa_operand_iterator_d::i, ssa_operand_iterator_d::iter_type, ssa_operand_iterator_d::numops, ssa_op_iter_none, ssa_operand_iterator_d::stmt, and ssa_operand_iterator_d::uses.
Referenced by DFS(), op_iter_init_phidef(), and op_iter_init_phiuse().
|
inlinestatic |
Return true if REF has an VIEW_CONVERT_EXPR somewhere in it.
References handled_component_p().
Referenced by build_access_from_expr_1().
|
inlinestatic |
Return an SSA_NAME node using the template SSA name NAME defined in statement STMT in function cfun.
References cfun, and copy_ssa_name_fn().
Referenced by build_one_array(), bump_vector_ptr(), create_parallel_loop(), create_phi_for_local_result(), gen_def_assigns(), gimple_make_forwarder_block(), insert_backedge_copies(), rewrite_cross_bb_scalar_dependence(), slpeel_tree_peel_loop_to_edge(), slpeel_update_phi_nodes_for_guard1(), slpeel_update_phi_nodes_for_guard2(), split_function(), transform_to_exit_first_loop(), tree_transform_and_unroll_loop(), update_accumulator_with_ops(), vect_create_epilog_for_reduction(), vect_finish_stmt_generation(), vect_loop_versioning(), vect_setup_realignment(), and vectorizable_load().
|
inlinestatic |
Delink an immediate_uses node from its chain.
References ssa_use_operand_d::next, and ssa_use_operand_d::prev.
Referenced by delink_stmt_imm_use(), end_imm_use_stmt_traverse(), finalize_ssa_uses(), free_stmt_operands(), link_use_stmts_after(), move_use_after_head(), next_imm_use_stmt(), release_phi_node(), release_ssa_name(), remove_phi_arg_num(), and set_ssa_use_from_ptr().
|
inlinestatic |
Delink all immediate_use information for STMT.
References cfun, delink_imm_use(), and ssa_operands_active().
Referenced by expand_gimple_basic_block(), gsi_remove(), and gsi_replace().
|
inlinestatic |
Creates a duplicate of a SSA name NAME tobe defined by statement STMT in function cfun.
References cfun, and duplicate_ssa_name_fn().
Referenced by abs_replacement(), create_new_def_for(), gimple_ic(), gimple_stringop_fixed_value(), insert_phi_nodes_for(), minmax_replacement(), separate_decls_in_region_name(), and split_loop_exit_edge().
|
inlinestatic |
Return current non-empty/deleted slot of the hashtable pointed to by HTI, or NULL if we have reached the end.
References htab_iterator::limit, and htab_iterator::slot.
|
inlinestatic |
Return TRUE if the last use on the stmt IMM refers to has been visited.
References immediate_use_iterator_d::imm_use, and immediate_use_iterator_d::iter_node.
Referenced by next_imm_use_on_stmt().
|
inlinestatic |
Return true is IMM has reached the end of the immediate use stmt list.
References immediate_use_iterator_d::end_p, and immediate_use_iterator_d::imm_use.
Referenced by first_imm_use_stmt(), and next_imm_use_stmt().
|
inlinestatic |
Finished the traverse of an immediate use stmt list IMM by removing the placeholder node from the list.
References delink_imm_use(), and immediate_use_iterator_d::iter_node.
|
inlinestatic |
Return true is IMM has reached the end of the immediate use list.
References immediate_use_iterator_d::end_p, and immediate_use_iterator_d::imm_use.
Referenced by first_readonly_imm_use(), and next_readonly_imm_use().
|
inlinestatic |
Initialize the hashtable iterator HTI to point to hashtable TABLE
References htab_iterator::htab, htab_iterator::limit, htab_iterator::slot, and table.
|
inlinestatic |
This routine will return the first use on the stmt IMM currently refers to.
References immediate_use_iterator_d::imm_use, ssa_use_operand_d::next, and immediate_use_iterator_d::next_imm_name.
|
inlinestatic |
Initialize IMM to traverse over uses of VAR. Return the first statement.
References end_imm_use_stmt_p(), immediate_use_iterator_d::end_p, immediate_use_iterator_d::imm_use, immediate_use_iterator_d::iter_node, link_use_stmts_after(), ssa_use_operand_d::loc, ssa_use_operand_d::next, immediate_use_iterator_d::next_imm_name, ssa_use_operand_d::prev, ssa_use_operand_d::stmt, and ssa_use_operand_d::use.
|
inlinestatic |
Initialize iterator IMM to process the list for VAR.
References immediate_use_iterator_d::end_p, end_readonly_imm_use_p(), immediate_use_iterator_d::imm_use, immediate_use_iterator_d::iter_node, and ssa_use_operand_d::next.
|
inlinestatic |
Returns the base object and a constant BITS_PER_UNIT offset in *POFFSET that denotes the starting address of the memory access EXP. Returns NULL_TREE if the offset is not constant or any component is not BITS_PER_UNIT-aligned. VALUEIZE if non-NULL is used to valueize SSA names. It should return its argument or a constant if the argument is known to be constant.
??? This is a static inline here to avoid the overhead of the indirect calls to VALUEIZE. But is this overhead really that significant? And should we perhaps just rely on WHOPR to specialize the function?
References array_ref_element_size(), array_ref_low_bound(), component_ref_field_offset(), exp(), double_int::high, HOST_WIDE_INT, integer_zerop(), mem_ref_offset(), and double_int::to_shwi().
Referenced by get_addr_base_and_unit_offset(), and gimple_fold_stmt_to_constant_1().
|
inlinestatic |
Return the tree pointed-to by DEF.
|
inlinestatic |
Return the line number for EXPR, or return -1 if we have no line number information for it.
References gimple_location().
Referenced by dump_gimple_bb_header().
|
inlinestatic |
Return the tree pointed-to by USE.
References ssa_use_operand_d::use.
Referenced by cprop_into_successor_phis(), and gimple_phi_arg_def().
|
inlinestatic |
Inline functions for manipulating various data structures defined in tree-flow.h. See tree-flow.h for documentation.
Return true when gimple SSA form was built. gimple_in_ssa_p is queried by gimplifier in various early stages before SSA infrastructure is initialized. Check for presence of the datastructures at first place.
Referenced by can_early_inline_edge_p(), cgraph_add_new_function(), cgraph_process_new_functions(), convert_callers_for_node(), copy_bb(), copy_cfg_body(), copy_edges_for_bb(), declare_return_variable(), dump_function_to_file(), execute_fixup_cfg(), expand_complex_div_wide(), expand_complex_libcall(), expand_complex_operations_1(), expand_omp_atomic_fetch_op(), expand_omp_atomic_load(), expand_omp_atomic_mutex(), expand_omp_atomic_pipeline(), expand_omp_atomic_store(), expand_omp_for(), expand_omp_for_init_counts(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_omp_taskreg(), expand_parallel_call(), flatten_function(), force_gimple_operand_1(), gimple_regimplify_operands(), gimplify_and_update_call_from_tree(), indirect_refs_may_alias_p(), initialize_inlined_parameters(), insert_debug_decl_map(), insert_init_debug_bind(), move_ssa_defining_stmt_for_defs(), optimize_inline_calls(), release_defs(), remove_bb(), setup_one_parameter(), tree_function_versioning(), update_call_from_tree(), and update_complex_assignment().
|
inlinestatic |
Return the tree operand for argument I of PHI node GS.
References get_use_from_ptr(), gimple_phi_arg(), and phi_arg_d::imm_use.
Referenced by all_phi_incrs_profitable(), and_comparisons_1(), can_skip_redundant_opnd(), canonicalize_loop_closed_ssa(), check_final_bb(), cleanup_empty_eh_merge_phis(), close_phi_written_to_memory(), collect_phi_def_edges(), complex_visit_phi(), compute_uninit_opnds_pos(), consider_split(), copy_phi_args(), copy_prop_visit_phi_node(), create_phi_basis(), degenerate_phi_p(), degenerate_phi_result(), detect_commutative_reduction(), do_invalidate(), dump_gimple_phi(), execute_late_warn_uninitialized(), execute_sm_if_changed(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), find_func_aliases(), forward_edge_to_pdom(), gimple_merge_blocks(), hoist_adjacent_loads(), initial_value_for_loop_phi(), initialize_hash_element(), insert_backedge_copies(), maybe_optimize_range_tests(), merge_phi_nodes(), ncd_with_phi(), or_comparisons_1(), output_phi(), phi_add_costs(), phi_alternatives_equal(), phi_args_equal_on_edges(), phi_contains_arg(), phi_incr_cost(), phi_rank(), predicate_scalar_phi(), predict_extra_loop_exits(), propagate_constants_for_unrolling(), prune_uninit_phi_opnds_in_unrealizable_paths(), record_equivalences_from_phis(), record_phi_increments(), remove_dead_phis(), remove_forwarder_block(), remove_forwarder_block_with_phi(), remove_invariant_phi(), remove_simple_copy_phi(), replace_phi_args_in(), rewrite_close_phi_out_of_ssa(), rewrite_phi_out_of_ssa(), same_close_phi_node(), same_phi_alternatives_1(), same_succ_hash(), simple_copy_phi_p(), simple_iv_increment_p(), single_non_singleton_phi_for_edges(), slsr_process_phi(), ssa_redirect_edge(), strlen_enter_block(), suitable_cond_bb(), tree_ssa_phiopt_worker(), unsplit_eh(), update_phi_components(), verify_gimple_in_cfg(), verify_gimple_phi(), verify_live_on_entry(), verify_non_ssa_vars(), visit_bb(), walk_aliased_vdefs_1(), walk_use_def_chains_1(), and warn_uninitialized_phi().
|
inlinestatic |
Return a pointer to the tree operand for argument I of PHI node GS.
References phi_arg_d::def, and gimple_phi_arg().
Referenced by find_decls_types_in_node(), make_phi_node(), and resize_phi_node().
|
inlinestatic |
Return the edge associated with argument I of phi node GS.
Referenced by analyze_evolution_in_loop(), analyze_initial_condition(), apply_return_prediction(), backedge_phi_arg_p(), calculate_live_on_exit(), canonicalize_loop_closed_ssa(), ccp_visit_phi_node(), check_final_bb(), collect_phi_def_edges(), consider_split(), copy_prop_visit_phi_node(), create_outofssa_var_map(), dump_gimple_phi(), edge_initial_value_for_loop_phi(), execute_sm_if_changed(), find_bb_for_arg(), find_uninit_use(), follow_ssa_edge_inner_loop_phi(), initial_value_for_loop_phi(), insert_backedge_copies(), nearest_common_dominator_of_uses(), output_phi(), phi_arg_in_outermost_loop(), predict_extra_loop_exits(), prepare_use_sites_for(), propagate_necessity(), prune_uninit_phi_opnds_in_unrealizable_paths(), remove_invariant_phi(), remove_simple_copy_phi(), replace_phi_args_in(), replace_uses_by(), rewrite_phi_out_of_ssa(), set_var_live_on_entry(), and vrp_visit_phi_node().
|
inlinestatic |
Return TRUE if argument I of phi node GS has a location record.
References gimple_phi_arg_location().
Referenced by dump_gimple_phi(), and insert_backedge_copies().
|
inlinestatic |
Return a use_operand_p pointer for argument I of PHI node GS.
References gimple_phi_arg(), and phi_arg_d::imm_use.
Referenced by canonicalize_loop_closed_ssa(), cprop_into_successor_phis(), make_phi_node(), release_phi_node(), remove_phi_arg_num(), resize_phi_node(), and verify_phi_args().
|
inlinestatic |
Return the source location of gimple argument I of phi node GS.
References gimple_phi_arg(), and phi_arg_d::locus.
Referenced by cleanup_empty_eh_merge_phis(), conditional_replacement(), copy_phi_args(), dump_gimple_phi(), forward_edge_to_pdom(), gimple_phi_arg_has_location(), insert_backedge_copies(), is_replaceable_p(), move_block_to_fn(), output_phi(), remove_phi_arg_num(), remove_unused_locals(), rewrite_update_phi_arguments(), ssa_redirect_edge(), and verify_gimple_in_cfg().
|
inlinestatic |
Return the source location of the argument on edge E of phi node GS.
References edge_def::dest_idx, gimple_phi_arg(), and phi_arg_d::locus.
Referenced by add_phi_args_after_copy_edge(), copy_phis_for_bb(), create_parallel_loop(), eliminate_build(), expand_omp_for_static_chunk(), gimple_duplicate_sese_tail(), gimple_lv_adjust_loop_header_phi(), phiprop_insert_phi(), remove_forwarder_block(), remove_forwarder_block_with_phi(), slpeel_update_phi_nodes_for_guard1(), split_loop_exit_edge(), and vect_loop_versioning().
|
inlinestatic |
Set the source location of gimple argument I of phi node GS to LOC.
References gimple_phi_arg(), and phi_arg_d::locus.
Referenced by add_phi_arg(), make_phi_node(), move_block_to_fn(), remove_phi_arg_num(), reserve_phi_args_for_new_edge(), resize_phi_node(), and rewrite_update_phi_arguments().
|
staticread |
Accessor to tree-ssa-operands.c caches.
Referenced by alloc_use(), finalize_ssa_uses(), fini_ssa_operands(), free_stmt_operands(), init_ssa_operands(), ssa_operand_alloc(), and ssa_operands_active().
|
inlinestatic |
Get the number of the next statement uid to be allocated.
Referenced by fixup_call_stmt_edges_1(), and input_function().
|
inlinestatic |
Artificial variable used for the virtual operand FUD chain.
Referenced by add_virtual_operand(), finalize_ssa_uses(), gimplify_and_update_call_from_tree(), parse_ssa_operands(), sink_clobbers(), verify_gimple_phi(), and verify_ssa_name().
|
inlinestatic |
Return true if VAR has a single nondebug use.
References is_gimple_debug(), ssa_use_operand_d::next, and single_imm_use_1().
Referenced by acceptable_pow_call(), adjust_last_stmt(), check_bool_pattern(), cleanup_empty_eh_merge_phis(), convert_mult_to_fma(), create_add_imm_cand(), create_add_ssa_cand(), create_mul_imm_cand(), create_mul_ssa_cand(), create_outofssa_var_map(), detect_commutative_reduction(), determine_invariantness_stmt(), dump_immediate_uses_for(), find_assert_locations_1(), find_basis_for_candidate(), forward_propagate_addr_expr(), get_name_for_bit_test(), get_ops(), get_prop_source_stmt(), is_reassociable_op(), lowest_cost_path(), maybe_optimize_range_tests(), negate_value(), optimize_stack_restore(), phi_incr_cost(), propagate_op_to_single_use(), register_edge_assert_for_1(), register_edge_assert_for_2(), rewrite_bittest(), simplify_conversion_from_bitmask(), simplify_rotate(), slsr_process_cast(), slsr_process_copy(), slsr_process_phi(), total_savings(), vect_operation_fits_smaller_type(), and zero_one_operation().
|
inlinestatic |
Return true if VAR has no nondebug uses.
References has_zero_uses_1(), and ssa_use_operand_d::next.
Referenced by coalesce_ssa_name(), compute_avail(), convert_mult_to_fma(), create_outofssa_var_map(), dump_immediate_uses_for(), eliminate(), eliminate_const_or_copy(), eliminate_useless_phis(), forward_propagate_addr_expr(), ipa_analyze_params_uses(), is_unused_scalar_param(), merge_phi_nodes(), partition_view_init(), propagate_rhs_into_lhs(), reassociate_bb(), remove_gimple_phi_args(), remove_prop_source_from_use(), remove_visited_stmt_chain(), replace_uses_by(), run_scc_vn(), ssa_forward_propagate_and_combine(), statement_sink_location(), and substitute_and_fold().
bool has_zero_uses_1 | ( | const ssa_use_operand_t * | head | ) |
tree-cfg.c
|
inlinestatic |
Set the number of the next statement uid to be allocated.
Referenced by input_function(), output_function(), renumber_gimple_stmt_uids(), and renumber_gimple_stmt_uids_in_blocks().
|
inlinestatic |
Return true if T (assumed to be a DECL) is a global variable. A variable is considered global if its storage is not automatic.
Referenced by ao_ref_from_mem(), build_outer_var_ref(), call_may_clobber_ref_p_1(), compute_known_type_jump_func(), copy_debug_stmt(), create_variable_info_for_1(), declare_return_variable(), dump_variable(), eliminate_bb(), execute_optimize_stdarg(), expand_used_vars(), find_func_aliases(), gimplify_adjust_omp_clauses(), gimplify_adjust_omp_clauses_1(), gimplify_bind_expr(), handle_lhs_call(), instrument_expr(), lookup_decl_in_outer_ctx(), lower_rec_input_clauses(), lower_send_clauses(), mark_all_vars_used_1(), maybe_optimize_var(), mem_dies_at_call(), move_stmt_op(), movement_possibility(), needs_to_live_in_memory(), new_var_info(), omp_check_private(), omp_copy_decl(), omp_notice_variable(), pt_solution_includes_1(), pt_solution_set_var(), ref_may_alias_global_p(), ref_maybe_used_by_call_p_1(), ref_maybe_used_by_stmt_p(), remove_dead_stmt(), remove_unused_locals(), requires_barrier(), scan_sharing_clauses(), and warn_uninitialized_vars().
|
inlinestatic |
Link ssa_imm_use node LINKNODE into the chain for DEF.
References link_imm_use_to_list(), ssa_use_operand_d::prev, and ssa_use_operand_d::use.
Referenced by link_imm_use_stmt(), relink_imm_use_stmt(), and set_ssa_use_from_ptr().
|
inlinestatic |
Link ssa_imm_use node LINKNODE into the chain for DEF, with use occurring in STMT.
References link_imm_use(), ssa_use_operand_d::loc, and ssa_use_operand_d::stmt.
Referenced by add_use_op(), and lower_emutls_phi_arg().
|
inlinestatic |
Link ssa_imm_use node LINKNODE into the chain for LIST.
References ssa_use_operand_d::next, and ssa_use_operand_d::prev.
Referenced by link_imm_use(), link_use_stmts_after(), and move_use_after_head().
|
inlinestatic |
This routine will relink all uses with the same stmt as HEAD into the list immediately following HEAD for iterator IMM.
References delink_imm_use(), gimple_vuse_op(), is_gimple_reg(), immediate_use_iterator_d::iter_node, link_imm_use_to_list(), move_use_after_head(), and ssa_use_operand_d::prev.
Referenced by first_imm_use_stmt(), and next_imm_use_stmt().
|
staticread |
Returns the loop of the statement STMT.
References gimple_bb(), and basic_block_def::loop_father.
Referenced by analyze_drs_in_stmts(), analyze_evolution_in_loop(), analyze_initial_condition(), chrec_contains_symbols_defined_in_loop(), close_phi_written_to_memory(), constant_after_peeling(), create_rdg_vertices(), determine_invariantness_stmt(), determine_loop_nest_reuse(), dr_analyze_innermost(), estimate_function_body_sizes(), final_range_test_p(), find_data_references_in_stmt(), find_givs_in_stmt_scev(), follow_ssa_edge(), follow_ssa_edge_inner_loop_phi(), idx_analyze_ref(), idx_infer_loop_bounds(), instantiate_scev_name(), interpret_loop_phi(), is_comparison_with_loop_invariant_p(), linearize_expr(), linearize_expr_tree(), loop_closed_phi_def(), loop_phi_node_p(), maybe_optimize_range_tests(), number_of_iterations_exit(), rdg_defs_used_in_other_loops_p(), rdg_flag_vertex(), reassociate_bb(), reduction_phi_p(), remove_invariant_phi(), rewrite_bittest(), rewrite_close_phi_out_of_ssa(), rewrite_cross_bb_scalar_deps(), scalar_evolution_in_region(), scev_analyzable_p(), should_break_up_subtract(), ssa_name_has_uses_outside_loop_p(), stmt_has_simple_data_refs_p(), try_generate_gimple_bb(), used_outside_reduction(), vect_analyze_data_refs(), vrp_var_may_overflow(), and vrp_visit_phi_node().
|
inlinestatic |
Return an SSA_NAME node for variable VAR defined in statement STMT in function cfun.
References cfun, and make_ssa_name_fn().
Referenced by abs_replacement(), build_and_add_sum(), build_and_insert_cast(), build_arrays(), build_check_stmt(), build_ref_for_offset(), conditional_replacement(), create_call_for_reduction_1(), create_gimple_tmp(), create_iv(), create_parallel_loop(), declare_return_variable(), emit_case_bit_tests(), execute_load_motion(), expand_complex_div_wide(), expand_omp_atomic_pipeline(), expand_omp_for_static_chunk(), expand_omp_taskreg(), expand_parallel_call(), expand_vector_divmod(), force_gimple_operand_1(), gen_conditions_for_pow_int_base(), gen_emutls_addr(), gen_one_condition(), generate_memset_builtin(), get_component_ssa_name(), get_initial_def_for_induction(), get_string_length(), gimple_regimplify_operands(), gimplify_and_update_call_from_tree(), handle_scalar_deps_crossing_scop_limits(), initialize_root_vars(), initialize_root_vars_lm(), instrument_builtin_call(), instrument_expr(), instrument_func_entry(), instrument_mem_region_access(), instrument_strlen_call(), internal_get_tmp_var(), ipa_tm_insert_gettmclone_call(), lower_eh_dispatch(), lower_emutls_1(), lower_resx(), make_phi_node(), maybe_register_def(), permute_vec_elements(), phiprop_insert_phi(), read_vector_array(), reassociate_to_the_same_stmt(), remap_ssa_name(), replace_removed_params_ssa_names(), rewrite_stmt(), separate_decls_in_region(), setup_one_parameter(), simplify_bitwise_binary(), simplify_float_conversion_using_ranges(), simplify_rotate(), simplify_truth_ops_using_ranges(), split_function(), take_address_of(), tm_log_emit_saves(), tree_function_versioning(), tree_optimize_tail_calls_1(), update_alias_info_with_stack_vars(), update_call_from_tree(), vect_create_data_ref_ptr(), vect_create_epilog_for_reduction(), vect_create_mask_and_perm(), vect_create_vectorized_demotion_stmts(), vect_gen_widened_results_half(), vect_get_constant_vectors(), vect_handle_widen_op_by_const(), vect_init_vector(), vect_is_simple_reduction_1(), vect_operation_fits_smaller_type(), vect_recog_over_widening_pattern(), vect_setup_realignment(), vectorizable_assignment(), vectorizable_call(), vectorizable_condition(), vectorizable_conversion(), vectorizable_load(), vectorizable_operation(), vectorizable_reduction(), and vectorizable_shift().
|
inlinestatic |
Return an anonymous SSA_NAME node for type TYPE defined in statement STMT in function cfun. Arrange so that it uses NAME in dumps.
References cfun, get_identifier(), and make_ssa_name_fn().
Referenced by adjust_return_value_with_ops(), attempt_builtin_powi(), build_and_insert_binop(), build_and_insert_call(), build_and_insert_ref(), cond_if_else_store_replacement_1(), cond_store_replacement(), create_add_on_incoming_edge(), create_expression_by_pieces(), create_iv(), create_phi_basis(), create_tailcall_accumulator(), do_regular_insertion(), eliminate_insert(), execute_cse_sincos(), execute_cse_sincos_1(), execute_optimize_bswap(), get_representative_for(), gimple_divmod_fixed_value(), gimple_gen_edge_profiler(), gimple_gen_ic_profiler(), gimple_ic(), gimple_mod_pow2(), gimple_mod_subtract(), gimple_stringop_fixed_value(), ifc_temp_var(), insert_initializers(), insert_into_preds_of_block(), introduce_cast_before_cand(), powi_as_mults(), powi_as_mults_1(), reassociate_bb(), rewrite_bittest(), rewrite_reciprocal(), take_address_of(), tree_transform_and_unroll_loop(), vect_create_cond_for_align_checks(), vect_permute_load_chain(), vect_permute_store_chain(), vect_recog_temp_ssa_var(), verify_bb_vtables(), and visit_reference_op_load().
|
inlinestatic |
Return true if VAR may be aliased. A variable is considered as maybe aliased if it has its address taken by the local TU or possibly by another TU and might be modified through a pointer.
Referenced by call_may_clobber_ref_p_1(), can_escape(), dump_alias_info(), instrument_expr(), mem_dies_at_call(), ptr_deref_may_alias_decl_p(), ref_may_be_aliased(), and ref_maybe_used_by_call_p_1().
|
inlinestatic |
Immediate use traversal of uses within a stmt require that all the uses on a stmt be sequentially listed. This routine is used to build up this sequential list by adding USE_P to the end of the current list currently delimited by HEAD and LAST_P. The new LAST_P value is returned.
References delink_imm_use(), link_imm_use_to_list(), and ssa_use_operand_d::next.
Referenced by link_use_stmts_after().
|
inlinestatic |
Advance the hashtable iterator pointed to by HTI to the next element of the hashtable.
References htab_iterator::limit, and htab_iterator::slot.
|
inlinestatic |
Bump to the next use on the stmt IMM refers to, return NULL if done.
References end_imm_use_on_stmt_p(), immediate_use_iterator_d::imm_use, ssa_use_operand_d::next, and immediate_use_iterator_d::next_imm_name.
|
inlinestatic |
Bump IMM to the next stmt which has a use of var.
References delink_imm_use(), end_imm_use_stmt_p(), immediate_use_iterator_d::imm_use, immediate_use_iterator_d::iter_node, link_use_stmts_after(), ssa_use_operand_d::next, and ssa_use_operand_d::prev.
|
inlinestatic |
Bump IMM to the next use in the list.
References end_readonly_imm_use_p(), immediate_use_iterator_d::imm_use, immediate_use_iterator_d::iter_node, and ssa_use_operand_d::next.
|
inlinestatic |
Return the number of nondebug immediate uses of VAR.
References is_gimple_debug(), and ssa_use_operand_d::next.
Referenced by dump_immediate_uses_for(), and simplify_permutation().
|
inlinestatic |
Return the number of operands matching FLAGS in STMT.
References loop::num.
|
inlinestatic |
-----------------------------------------------------------------------
The following set of routines are used to iterator over various type of SSA operands.
Return true if PTR is finished iterating.
References ssa_operand_iterator_d::done.
Referenced by DFS(), single_ssa_def_operand(), single_ssa_tree_operand(), single_ssa_use_operand(), and zero_ssa_operands().
|
inlinestatic |
Initialize the iterator PTR to the virtual defs in STMT.
References ssa_operand_iterator_d::done, ssa_operand_iterator_d::flags, gimple_asm_noutputs(), gimple_use_ops(), gimple_vuse(), ssa_operand_iterator_d::i, use_optype_d::next, ssa_operand_iterator_d::numops, ssa_operand_iterator_d::stmt, and ssa_operand_iterator_d::uses.
Referenced by op_iter_init_def(), op_iter_init_tree(), and op_iter_init_use().
|
inlinestatic |
Initialize iterator PTR to the def operands in STMT based on FLAGS. Return the first def.
References ssa_operand_iterator_d::iter_type, op_iter_init(), op_iter_next_def(), and ssa_op_iter_def.
Referenced by single_ssa_def_operand().
|
inlinestatic |
Start an iterator for a PHI definition.
References clear_and_done_ssa_iter(), comp, ssa_operand_iterator_d::done, is_gimple_reg(), ssa_operand_iterator_d::iter_type, and ssa_op_iter_def.
|
inlinestatic |
Referenced by DFS().
|
inlinestatic |
Initialize the iterator PTR for uses matching FLAGS in PHI. FLAGS should be either SSA_OP_USES or SSA_OP_VIRTUAL_USES.
References clear_and_done_ssa_iter(), comp, ssa_operand_iterator_d::done, ssa_operand_iterator_d::flags, gimple_phi_num_args(), gimple_phi_result(), is_gimple_reg(), ssa_operand_iterator_d::iter_type, ssa_operand_iterator_d::numops, op_iter_next_use(), ssa_op_iter_use, and ssa_operand_iterator_d::stmt.
|
inlinestatic |
Initialize iterator PTR to the operands in STMT based on FLAGS. Return the first operand as a tree.
References ssa_operand_iterator_d::iter_type, op_iter_init(), op_iter_next_tree(), and ssa_op_iter_tree.
Referenced by single_ssa_tree_operand(), and zero_ssa_operands().
|
inlinestatic |
Initialize iterator PTR to the use operands in STMT based on FLAGS. Return the first use.
References ssa_operand_iterator_d::iter_type, op_iter_init(), op_iter_next_use(), and ssa_op_iter_use.
Referenced by DFS(), and single_ssa_use_operand().
|
inlinestatic |
Get the next iterator def value for PTR.
References ssa_operand_iterator_d::done, ssa_operand_iterator_d::flags, gimple_op_ptr(), gimple_vdef_ptr(), ssa_operand_iterator_d::i, is_gimple_reg(), ssa_operand_iterator_d::iter_type, ssa_operand_iterator_d::numops, ssa_op_iter_def, and ssa_operand_iterator_d::stmt.
Referenced by op_iter_init_def(), and single_ssa_def_operand().
|
inlinestatic |
Get the next iterator tree value for PTR.
References ssa_operand_iterator_d::done, ssa_operand_iterator_d::flags, gimple_op(), gimple_vdef(), ssa_operand_iterator_d::i, is_gimple_reg(), ssa_operand_iterator_d::iter_type, use_optype_d::next, ssa_operand_iterator_d::numops, ssa_op_iter_tree, ssa_operand_iterator_d::stmt, and ssa_operand_iterator_d::uses.
Referenced by op_iter_init_tree(), and single_ssa_tree_operand().
|
inlinestatic |
Get the next iterator use value for PTR.
References ssa_operand_iterator_d::done, ssa_operand_iterator_d::i, ssa_operand_iterator_d::iter_type, use_optype_d::next, ssa_operand_iterator_d::numops, ssa_op_iter_use, ssa_operand_iterator_d::stmt, and ssa_operand_iterator_d::uses.
Referenced by DFS(), op_iter_init_phiuse(), op_iter_init_use(), and single_ssa_use_operand().
|
inlinestatic |
Return the phi argument which contains the specified use.
References gimple_phi_arg(), and gimple_phi_capacity().
|
inlinestatic |
Return the PHI nodes for basic block BB, or NULL if there are no PHI nodes.
References basic_block_def::flags, basic_block_def::basic_block_il_dependent::gimple, basic_block_def::il, and gimple_bb_info::phi_nodes.
Referenced by add_phi_args_after_copy_edge(), add_phi_node_to_bb(), bb_has_non_vop_phi(), compute_antic_aux(), compute_partial_antic_aux(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_phi_nodes(), expand_transaction(), forward_edge_to_pdom(), gimple_duplicate_bb(), gimple_empty_block_p(), gimple_execute_on_growing_pred(), gimple_execute_on_shrinking_pred(), gimple_find_edge_insert_loc(), lower_emutls_function_body(), merge_phi_nodes(), no_side_effect_bb(), output_bb(), phi_translate_set(), remove_forwarder_block(), split_critical_edges(), tree_forwarder_block_p(), tree_optimize_tail_calls_1(), tree_ssa_phiopt_worker(), uncprop_into_successor_phis(), unsplit_eh(), value_replacement(), and vect_analyze_loop_form().
|
inlinestatic |
References basic_block_def::flags, basic_block_def::basic_block_il_dependent::gimple, basic_block_def::il, and gimple_bb_info::phi_nodes.
Referenced by gsi_start_phis().
|
inlinestatic |
PHI nodes should contain only ssa_names and invariants. A test for ssa_name is definitely simpler; don't let invalid contents slip in in the meantime.
References is_gimple_min_invariant().
Referenced by eliminate_build().
|
inlinestatic |
Return true, if the two ranges [POS1, SIZE1] and [POS2, SIZE2] overlap. SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the range is open-ended. Otherwise return false.
References HOST_WIDE_INT.
Referenced by aliasing_component_refs_p(), decl_refs_may_alias_p(), do_structure_copy(), fold_builtin_memory_op(), get_constraint_for_component_ref(), indirect_ref_may_alias_decl_p(), and indirect_refs_may_alias_p().
|
inlinestatic |
Given an edge_var_map V, return the PHI arg definition.
References _edge_var_map::def.
Referenced by expand_omp_for_static_chunk(), flush_pending_stmts(), reinstall_phi_args(), and remove_forwarder_block_with_phi().
|
inlinestatic |
Given an edge_var_map V, return the PHI arg location.
References _edge_var_map::locus.
Referenced by expand_omp_for_static_chunk(), flush_pending_stmts(), reinstall_phi_args(), and remove_forwarder_block_with_phi().
|
inlinestatic |
Given an edge_var_map V, return the PHI result.
References _edge_var_map::result.
Referenced by expand_omp_for_static_chunk(), reinstall_phi_args(), and remove_forwarder_block_with_phi().
|
inlinestatic |
Return true if REF, a handled component reference, has an ARRAY_REF somewhere in it.
References handled_component_p().
|
inlinestatic |
Relink a new node in place of an old node in the list.
References ssa_use_operand_d::next, ssa_use_operand_d::prev, and ssa_use_operand_d::use.
Referenced by relink_imm_use_stmt(), and remove_phi_arg_num().
|
inlinestatic |
Relink ssa_imm_use node LINKNODE into the chain for OLD, with use occurring in STMT.
References link_imm_use(), ssa_use_operand_d::loc, relink_imm_use(), and ssa_use_operand_d::stmt.
Referenced by resize_phi_node().
|
inlinestatic |
Set the number of the next statement uid to be allocated.
Referenced by input_function(), output_function(), renumber_gimple_stmt_uids(), and renumber_gimple_stmt_uids_in_blocks().
|
inlinestatic |
Set PHI nodes of a basic block BB to SEQ.
References basic_block_def::flags, basic_block_def::basic_block_il_dependent::gimple, gimple_set_bb(), gsi_end_p(), gsi_next(), gsi_stmt(), basic_block_def::il, and gimple_bb_info::phi_nodes.
Referenced by add_phi_node_to_bb(), expand_phi_nodes(), predicate_all_scalar_phis(), and remove_phi_nodes().
|
inlinestatic |
Set the value of a use pointed to by USE to VAL.
References delink_imm_use(), link_imm_use(), and ssa_use_operand_d::use.
|
inlinestatic |
If VAR has only a single immediate nondebug use, return true, and set USE_P and STMT to the use pointer and stmt of occurrence.
References is_gimple_debug(), ssa_use_operand_d::loc, ssa_use_operand_d::next, single_imm_use_1(), and ssa_use_operand_d::stmt.
Referenced by convert_mult_to_fma(), eliminate(), final_range_test_p(), get_prop_dest_stmt(), get_single_immediate_use(), is_replaceable_p(), maybe_optimize_range_tests(), merge_phi_nodes(), phi_rank(), propagate_op_to_single_use(), propagate_with_phi(), rewrite_bittest(), simplify_bitwise_binary(), simplify_builtin_call(), and vect_single_imm_use().
bool single_imm_use_1 | ( | const ssa_use_operand_t * | head, |
use_operand_p * | use_p, | ||
gimple * | stmt | ||
) |
Return true if the var whose chain of uses starts at PTR has a single nondebug use. Set USE_P and STMT to that single nondebug use, if so, or to NULL otherwise.
References is_gimple_debug(), ssa_use_operand_d::loc, ssa_use_operand_d::next, and ssa_use_operand_d::stmt.
Referenced by has_single_use(), and single_imm_use().
|
inlinestatic |
If there is a single DEF in the PHI node which matches FLAG, return it. Otherwise return NULL_DEF_OPERAND_P.
References is_gimple_reg().
|
inlinestatic |
If there is a single operand in STMT matching FLAGS, return it. Otherwise return NULL.
References op_iter_done(), op_iter_init_def(), and op_iter_next_def().
Referenced by statement_sink_location().
|
inlinestatic |
If there is a single operand in STMT matching FLAGS, return it. Otherwise return NULL.
References op_iter_done(), op_iter_init_tree(), and op_iter_next_tree().
|
inlinestatic |
If there is a single operand in STMT matching FLAGS, return it. Otherwise return NULL.
References op_iter_done(), op_iter_init_use(), and op_iter_next_use().
|
inlinestatic |
Return true if VAR cannot be modified by the program.
|
inlinestatic |
Return true if there are zero operands in STMT matching the type given in FLAGS.
References op_iter_done(), and op_iter_init_tree().