GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | innermost_loop_behavior |
struct | indices |
struct | dr_alias |
struct | data_reference |
class | dr_with_seg_len |
class | dr_with_seg_len_pair_t |
struct | conflict_function |
struct | subscript |
struct | data_dependence_relation |
Typedefs | |
typedef HOST_WIDE_INT | lambda_int |
typedef lambda_int * | lambda_vector |
typedef lambda_vector * | lambda_matrix |
typedef struct data_reference * | data_reference_p |
typedef vec< tree > | affine_fn |
typedef struct subscript * | subscript_p |
typedef struct data_dependence_relation * | ddr_p |
Enumerations | |
enum | data_dependence_direction { dir_positive , dir_negative , dir_equal , dir_positive_or_negative , dir_positive_or_equal , dir_negative_or_equal , dir_star , dir_independent } |
Variables | |
const unsigned int | DR_ALIAS_RAW = 1U << 0 |
const unsigned int | DR_ALIAS_WAR = 1U << 1 |
const unsigned int | DR_ALIAS_WAW = 1U << 2 |
const unsigned int | DR_ALIAS_ARBITRARY = 1U << 3 |
const unsigned int | DR_ALIAS_SWAPPED = 1U << 4 |
const unsigned int | DR_ALIAS_UNSWAPPED = 1U << 5 |
const unsigned int | DR_ALIAS_MIXED_STEPS = 1U << 6 |
#define CF_NO_DEPENDENCE_P | ( | CF | ) |
Referenced by analyze_miv_subscript(), analyze_siv_subscript(), and subscript_dependence_tester_1().
#define CF_NONTRIVIAL_P | ( | CF | ) |
Referenced by common_affine_function(), dump_subscript(), and free_conflict_function().
#define CF_NOT_KNOWN_P | ( | CF | ) |
Referenced by analyze_miv_subscript(), analyze_siv_subscript(), and subscript_dependence_tester_1().
#define DDR_A | ( | DDR | ) |
Referenced by adjust_unroll_factor(), compute_affine_dependence(), compute_alias_check_pairs(), cond_if_else_store_replacement(), dependence_distance_ge_vf(), determine_loop_nest_reuse(), dump_data_dependence_relation(), ddr_hasher::equal(), ddr_hasher::hash(), initialize_data_dependence_relation(), initialize_data_dependence_relation(), lambda_transform_legal_p(), runtime_alias_check_p(), pcom_worker::split_data_refs_to_components(), tree_loop_unroll_and_jam(), vect_analyze_data_ref_dependence(), vect_analyze_possibly_independent_ddr(), vect_prune_runtime_alias_test_list(), and vect_slp_analyze_data_ref_dependence().
#define DDR_AFFINE_P | ( | DDR | ) |
Referenced by add_multivariate_self_dist(), add_other_self_distances(), dump_dist_dir_vectors(), initialize_data_dependence_relation(), and non_affine_dependence_relation().
#define DDR_ARE_DEPENDENT | ( | DDR | ) |
Referenced by add_other_self_distances(), adjust_unroll_factor(), build_classic_dist_vector(), loop_distribution::classify_builtin_ldst(), compute_affine_dependence(), compute_subscript_distance(), cond_if_else_store_replacement(), loop_distribution::data_dep_in_cycle_p(), dependence_distance_ge_vf(), determine_loop_nest_reuse(), dump_data_dependence_relation(), dump_dist_dir_vectors(), finalize_ddr_dependent(), initialize_data_dependence_relation(), initialize_data_dependence_relation(), known_dependences_p(), lambda_transform_legal_p(), loop_distribution::pg_add_dependence_edges(), pcom_worker::split_data_refs_to_components(), tree_loop_unroll_and_jam(), tree_loop_interchange::update_data_info(), tree_loop_interchange::valid_data_dependences(), vect_analyze_data_ref_dependence(), and vect_slp_analyze_data_ref_dependence().
#define DDR_B | ( | DDR | ) |
Referenced by adjust_unroll_factor(), compute_affine_dependence(), compute_alias_check_pairs(), cond_if_else_store_replacement(), dependence_distance_ge_vf(), determine_loop_nest_reuse(), dump_data_dependence_relation(), ddr_hasher::equal(), ddr_hasher::hash(), initialize_data_dependence_relation(), initialize_data_dependence_relation(), lambda_transform_legal_p(), runtime_alias_check_p(), pcom_worker::split_data_refs_to_components(), tree_loop_unroll_and_jam(), vect_analyze_data_ref_dependence(), vect_analyze_possibly_independent_ddr(), vect_prune_runtime_alias_test_list(), and vect_slp_analyze_data_ref_dependence().
#define DDR_COULD_BE_INDEPENDENT_P | ( | DDR | ) |
Referenced by dependence_distance_ge_vf(), determine_loop_nest_reuse(), initialize_data_dependence_relation(), and vect_analyze_data_ref_dependence().
#define DDR_DIR_VECT | ( | DDR, | |
I ) |
Referenced by dump_data_dependence_relation().
#define DDR_DIR_VECTS | ( | DDR | ) |
Referenced by dump_dist_dir_vectors(), free_dependence_relation(), initialize_data_dependence_relation(), and save_dir_v().
#define DDR_DIST_VECT | ( | DDR, | |
I ) |
Referenced by loop_distribution::data_dep_in_cycle_p(), ddr_dependence_level(), determine_loop_nest_reuse(), dump_data_dependence_relation(), lambda_transform_legal_p(), loop_distribution::pg_add_dependence_edges(), subscript_dependence_tester(), tree_loop_interchange::update_data_info(), and tree_loop_interchange::valid_data_dependences().
#define DDR_DIST_VECTS | ( | DDR | ) |
Referenced by adjust_unroll_factor(), build_classic_dir_vector(), loop_distribution::classify_builtin_ldst(), ddr_dependence_level(), dependence_distance_ge_vf(), dump_dist_dir_vectors(), free_dependence_relation(), initialize_data_dependence_relation(), save_dist_v(), vect_analyze_data_ref_dependence(), and vect_analyze_possibly_independent_ddr().
#define DDR_LOOP_NEST | ( | DDR | ) |
Referenced by add_multivariate_self_dist(), add_other_self_distances(), build_classic_dist_vector_1(), loop_distribution::classify_builtin_ldst(), dump_data_dependence_relation(), initialize_data_dependence_relation(), initialize_data_dependence_relation(), loop_distribution::pg_add_dependence_edges(), and vect_analyze_data_ref_dependence().
#define DDR_NB_LOOPS | ( | DDR | ) |
The size of the direction/distance vectors: the number of loops in the loop nest.
Referenced by add_multivariate_self_dist(), add_other_self_distances(), add_outer_distances(), adjust_unroll_factor(), build_classic_dir_vector(), build_classic_dist_vector(), build_classic_dist_vector_1(), loop_distribution::data_dep_in_cycle_p(), ddr_dependence_level(), dump_data_dependence_relation(), dump_dist_dir_vectors(), insert_innermost_unit_dist_vector(), loop_distribution::pg_add_dependence_edges(), save_dir_v(), save_dist_v(), and subscript_dependence_tester().
#define DDR_NUM_DIR_VECTS | ( | DDR | ) |
Referenced by dump_data_dependence_relation().
#define DDR_NUM_DIST_VECTS | ( | DDR | ) |
Referenced by adjust_unroll_factor(), loop_distribution::classify_builtin_ldst(), loop_distribution::data_dep_in_cycle_p(), ddr_dependence_level(), dependence_distance_ge_vf(), determine_loop_nest_reuse(), dump_data_dependence_relation(), lambda_transform_legal_p(), loop_distribution::pg_add_dependence_edges(), pcom_worker::split_data_refs_to_components(), subscript_dependence_tester(), tree_loop_interchange::update_data_info(), tree_loop_interchange::valid_data_dependences(), and vect_analyze_data_ref_dependence().
#define DDR_NUM_SUBSCRIPTS | ( | DDR | ) |
Referenced by add_distance_for_zero_overlaps(), add_other_self_distances(), build_classic_dist_vector_1(), and compute_subscript_distance().
#define DDR_OBJECT_A | ( | DDR | ) |
Referenced by initialize_data_dependence_relation(), and vect_prune_runtime_alias_test_list().
#define DDR_OBJECT_B | ( | DDR | ) |
Referenced by initialize_data_dependence_relation(), and vect_prune_runtime_alias_test_list().
#define DDR_REVERSED_P | ( | DDR | ) |
Referenced by build_classic_dist_vector(), loop_distribution::classify_builtin_ldst(), loop_distribution::data_dep_in_cycle_p(), dependence_distance_ge_vf(), loop_distribution::pg_add_dependence_edges(), tree_loop_interchange::valid_data_dependences(), vect_analyze_data_ref_dependence(), and vect_analyze_possibly_independent_ddr().
#define DDR_SELF_REFERENCE | ( | DDR | ) |
Referenced by initialize_data_dependence_relation().
#define DDR_SUBSCRIPT | ( | DDR, | |
I ) |
Referenced by add_distance_for_zero_overlaps(), add_other_self_distances(), build_classic_dist_vector_1(), and compute_subscript_distance().
#define DDR_SUBSCRIPTS | ( | DDR | ) |
Referenced by add_other_self_distances(), dump_data_dependence_relation(), finalize_ddr_dependent(), free_dependence_relation(), initialize_data_dependence_relation(), initialize_data_dependence_relation(), invariant_access_functions(), same_access_functions(), and subscript_dependence_tester_1().
#define DR_ACCESS_FN | ( | DR, | |
I ) |
Referenced by create_data_ref(), create_intersect_range_checks_index(), dump_data_reference(), and same_data_refs().
#define DR_ACCESS_FNS | ( | DR | ) |
Referenced by access_functions_are_affine_or_constant_p(), any_access_function_variant_p(), free_data_ref(), self_reuse_distance(), and tree_loop_unroll_and_jam().
#define DR_BASE_ADDRESS | ( | DR | ) |
Referenced by loop_distribution::build_rdg_partition_for_vertex(), check_scan_store(), comp_dr_with_seg_len_pair(), create_data_ref(), create_ifn_alias_checks(), create_waw_or_war_checks(), pcom_worker::determine_offset(), dr_align_group_sort_cmp(), dr_group_sort_cmp(), dr_may_alias_p(), get_segment_min_max(), if_convertible_loop_p_1(), ifcvt_memrefs_wont_trap(), operator==(), loop_distribution::pg_add_dependence_edges(), prune_runtime_alias_test_list(), ref_at_iteration(), runtime_alias_check_p(), loop_distribution::share_memory_accesses(), update_epilogue_loop_vinfo(), pcom_worker::valid_initializer_p(), vect_analyze_data_ref_accesses(), vect_analyze_data_refs(), vect_create_data_ref_ptr(), vect_dr_aligned_if_peeled_dr_is(), vect_enhance_data_refs_alignment(), vect_find_stmt_data_reference(), vect_prune_runtime_alias_test_list(), vectorizable_load(), vectorizable_scan_store(), vectorizable_store(), and vectorizable_with_step_bound_p().
#define DR_BASE_ALIGNMENT | ( | DR | ) |
Referenced by create_data_ref().
#define DR_BASE_MISALIGNMENT | ( | DR | ) |
Referenced by create_data_ref().
#define DR_BASE_OBJECT | ( | DR | ) |
#define DR_INIT | ( | DR | ) |
Referenced by pcom_worker::aff_combination_dr_offset(), loop_distribution::build_rdg_partition_for_vertex(), check_scan_store(), comp_dr_with_seg_len_pair(), create_data_ref(), create_ifn_alias_checks(), create_waw_or_war_checks(), pcom_worker::determine_offset(), dr_align_group_sort_cmp(), dr_group_sort_cmp(), dr_may_alias_p(), dr_misalignment(), get_segment_min_max(), if_convertible_loop_p_1(), ifcvt_memrefs_wont_trap(), operator==(), loop_distribution::pg_add_dependence_edges(), prune_runtime_alias_test_list(), ref_at_iteration(), loop_distribution::share_memory_accesses(), pcom_worker::valid_initializer_p(), vect_analyze_data_ref_accesses(), vect_analyze_data_refs(), vect_analyze_group_access_1(), vect_compile_time_alias(), vect_dissolve_slp_only_groups(), vect_dr_aligned_if_related_peeled_dr_is(), vect_find_stmt_data_reference(), vectorizable_load(), vectorizable_store(), and vectorizable_with_step_bound_p().
#define DR_INNERMOST | ( | DR | ) |
Referenced by create_data_ref(), dr_alignment(), pcom_worker::find_looparound_phi(), hash_memrefs_baserefs_and_store_DRs_read_written_info(), if_convertible_loop_p_1(), ifcvt_memrefs_wont_trap(), vect_dr_behavior(), and vect_record_base_alignments().
#define DR_IS_CONDITIONAL_IN_STMT | ( | DR | ) |
Referenced by create_data_ref(), vect_find_stmt_data_reference(), and vect_record_base_alignments().
#define DR_IS_READ | ( | DR | ) |
Referenced by adjust_unroll_factor(), cond_if_else_store_replacement(), create_data_ref(), loop_distribution::create_rdg_vertices(), pcom_worker::determine_roots_comp(), dr_group_sort_cmp(), dr_may_alias_p(), dr_with_seg_len_pair_t::dr_with_seg_len_pair_t(), dump_dref(), execute_load_motion(), pcom_worker::find_looparound_phi(), find_single_drs(), ifcvt_memrefs_wont_trap(), vect_optimize_slp_pass::internal_node_cost(), lambda_transform_legal_p(), linear_loads_p(), name_for_ref(), loop_distribution::pg_add_dependence_edges(), pcom_worker::split_data_refs_to_components(), loop_distribution::update_type_for_merge(), vect_analyze_data_ref_access(), vect_analyze_data_ref_accesses(), vect_analyze_data_ref_dependence(), vect_analyze_data_refs(), vect_analyze_early_break_dependences(), vect_analyze_group_access_1(), vect_bb_slp_scalar_cost(), vect_build_slp_tree_1(), vect_build_slp_tree_2(), vect_check_gather_scatter(), vect_compute_single_scalar_iteration_cost(), vect_find_stmt_data_reference(), vect_gather_slp_loads(), vect_get_data_access_cost(), vect_get_strided_load_store_ops(), vect_is_extending_load(), vect_is_slp_load_node(), vect_preserves_scalar_order_p(), vect_recog_cond_store_pattern(), vect_recog_gather_scatter_pattern(), vect_schedule_slp_node(), vect_slp_analyze_data_ref_dependence(), vect_slp_analyze_load_dependences(), vect_supportable_dr_alignment(), and vect_truncate_gather_scatter_offset().
#define DR_IS_WRITE | ( | DR | ) |
Referenced by add_ref_to_chain(), compute_all_dependences(), cond_if_else_store_replacement(), pcom_worker::determine_roots_comp(), dr_may_alias_p(), dr_with_seg_len_pair_t::dr_with_seg_len_pair_t(), execute_load_motion(), pcom_worker::execute_pred_commoning_chain(), get_chain_last_write_at(), get_chain_last_write_before_load(), loop_distribution::get_data_dependence(), hash_memrefs_baserefs_and_store_DRs_read_written_info(), pcom_worker::split_data_refs_to_components(), pcom_worker::suitable_component_p(), tree_loop_unroll_and_jam(), vect_analyze_data_ref_dependence(), vect_analyze_data_refs(), vect_analyze_early_break_dependences(), vect_analyze_group_access_1(), vect_analyze_slp(), vect_build_slp_tree_1(), vect_cond_store_pattern_same_ref(), vect_dissolve_slp_only_groups(), vect_enhance_data_refs_alignment(), vect_is_store_elt_extraction(), vect_preserves_scalar_order_p(), vect_schedule_slp(), and vect_slp_analyze_store_dependences().
#define DR_NUM_DIMENSIONS | ( | DR | ) |
Referenced by create_data_ref(), create_intersect_range_checks_index(), dump_data_reference(), same_data_refs(), and same_data_refs_base_objects().
#define DR_OFFSET | ( | DR | ) |
Referenced by pcom_worker::aff_combination_dr_offset(), loop_distribution::build_rdg_partition_for_vertex(), comp_dr_with_seg_len_pair(), create_data_ref(), create_ifn_alias_checks(), create_waw_or_war_checks(), pcom_worker::determine_offset(), dr_align_group_sort_cmp(), dr_equal_offsets_p(), dr_group_sort_cmp(), dr_may_alias_p(), get_segment_min_max(), if_convertible_loop_p_1(), ifcvt_memrefs_wont_trap(), operator==(), loop_distribution::pg_add_dependence_edges(), prune_runtime_alias_test_list(), ref_at_iteration(), loop_distribution::share_memory_accesses(), pcom_worker::valid_initializer_p(), vect_analyze_data_ref_accesses(), vect_analyze_data_refs(), vect_dr_aligned_if_peeled_dr_is(), vect_enhance_data_refs_alignment(), vect_find_stmt_data_reference(), vect_prune_runtime_alias_test_list(), and vectorizable_with_step_bound_p().
#define DR_OFFSET_ALIGNMENT | ( | DR | ) |
Referenced by create_data_ref(), and vect_find_stmt_data_reference().
#define DR_PTR_INFO | ( | DR | ) |
Referenced by bump_vector_ptr(), dr_analyze_alias(), vect_create_addr_base_for_vector_ref(), vect_create_data_ref_ptr(), and vect_duplicate_ssa_name_ptr_info().
#define DR_REF | ( | DR | ) |
Referenced by adjacent_dr_p(), check_scan_store(), loop_distribution::classify_builtin_ldst(), compute_access_range(), compute_access_stride(), compute_affine_dependence(), compute_alias_check_pairs(), create_data_ref(), create_runtime_alias_checks(), dependence_distance_ge_vf(), pcom_worker::determine_offset(), dr_analyze_alias(), dr_group_sort_cmp(), dr_may_alias_p(), dump_access_strides(), dump_alias_pair(), dump_data_reference(), dump_dref(), pcom_worker::find_looparound_phi(), find_single_drs(), generate_rawmemchr_builtin(), get_group_alias_ptr_type(), if_convertible_loop_p_1(), ifcvt_memrefs_wont_trap(), initialize_data_dependence_relation(), initialize_root_vars(), initialize_root_vars_lm(), initialize_root_vars_store_elim_2(), prune_runtime_alias_test_list(), ref_at_iteration(), runtime_alias_check_p(), same_data_refs(), self_reuse_distance(), should_interchange_loops(), pcom_worker::split_data_refs_to_components(), pcom_worker::suitable_component_p(), suitable_reference_p(), loop_distribution::transform_reduction_loop(), update_epilogue_loop_vinfo(), vect_analyze_data_ref_access(), vect_analyze_data_ref_accesses(), vect_analyze_data_ref_dependence(), vect_analyze_data_refs(), vect_analyze_early_break_dependences(), vect_analyze_group_access_1(), vect_bb_slp_scalar_cost(), vect_build_slp_instance(), vect_check_gather_scatter(), vect_compute_data_ref_alignment(), vect_create_addr_base_for_vector_ref(), vect_create_data_ref_ptr(), vect_describe_gather_scatter_call(), vect_dissolve_slp_only_groups(), vect_find_stmt_data_reference(), vect_get_scalar_dr_size(), vect_get_vector_types_for_stmt(), vect_known_alignment_in_bytes(), vect_prune_runtime_alias_test_list(), vect_recog_cond_store_pattern(), vect_setup_realignment(), vect_slp_analyze_data_ref_dependence(), vect_slp_analyze_load_dependences(), vect_slp_analyze_store_dependences(), vect_slp_prefer_store_lanes_p(), vect_supportable_dr_alignment(), vect_truncate_gather_scatter_offset(), vect_vfa_access_size(), vector_alignment_reachable_p(), vectorizable_load(), vectorizable_scan_store(), and vectorizable_store().
#define DR_STEP | ( | DR | ) |
Referenced by adjacent_dr_p(), loop_distribution::build_rdg_partition_for_vertex(), comp_dr_with_seg_len_pair(), create_data_ref(), create_ifn_alias_checks(), create_intersect_range_checks(), create_intersect_range_checks_index(), create_waw_or_war_checks(), data_ref_segment_size(), pcom_worker::determine_offset(), dr_align_group_sort_cmp(), dr_group_sort_cmp(), dr_may_alias_p(), dr_step_indicator(), get_misalign_in_elems(), if_convertible_loop_p_1(), ifcvt_memrefs_wont_trap(), loop_distribution::pg_add_dependence_edges(), prune_runtime_alias_test_list(), ref_at_iteration(), loop_distribution::share_memory_accesses(), pcom_worker::suitable_component_p(), suitable_reference_p(), pcom_worker::valid_initializer_p(), vect_analyze_data_ref_access(), vect_analyze_data_ref_accesses(), vect_analyze_data_refs(), vect_analyze_group_access_1(), vect_compile_time_alias(), vect_create_cond_for_align_checks(), vect_create_data_ref_ptr(), vect_dr_aligned_if_peeled_dr_is(), vect_dr_misalign_for_aligned_access(), vect_enhance_data_refs_alignment(), vect_find_stmt_data_reference(), vect_gen_prolog_loop_niters(), vect_get_peeling_costs_all_drs(), vect_get_strided_load_store_ops(), vect_peeling_supportable(), vect_preserves_scalar_order_p(), vect_prune_runtime_alias_test_list(), vect_relevant_for_alignment_p(), vect_supportable_dr_alignment(), vect_truncate_gather_scatter_offset(), vect_update_init_of_dr(), vect_update_misalignment_for_peel(), vect_vfa_segment_size(), vectorizable_load(), vectorizable_store(), and vectorizable_with_step_bound_p().
#define DR_STEP_ALIGNMENT | ( | DR | ) |
Referenced by create_data_ref(), vect_compute_data_ref_alignment(), vect_enhance_data_refs_alignment(), vect_find_stmt_data_reference(), and vectorizable_load().
#define DR_STMT | ( | DR | ) |
Referenced by classify_builtin_st(), loop_distribution::classify_partition(), compute_access_range(), compute_access_stride(), compute_affine_dependence(), cond_if_else_store_replacement(), create_data_ref(), loop_distribution::data_dep_in_cycle_p(), dr_align_group_sort_cmp(), dr_group_sort_cmp(), dump_data_reference(), pcom_worker::find_looparound_phi(), find_single_drs(), fuse_memset_builtins(), generate_memset_builtin(), loop_distribution::get_data_dependence(), hash_memrefs_baserefs_and_store_DRs_read_written_info(), if_convertible_loop_p_1(), ifcvt_memrefs_wont_trap(), initialize_data_dependence_relation(), latch_dominated_by_data_ref(), vec_info::lookup_dr(), loop_distribution::pg_add_dependence_edges(), runtime_alias_check_p(), pcom_worker::split_data_refs_to_components(), loop_distribution::transform_reduction_loop(), update_epilogue_loop_vinfo(), vect_analyze_data_ref_accesses(), vect_analyze_data_refs(), and vect_dissolve_slp_only_groups().
#define DR_UNCONSTRAINED_BASE | ( | DR | ) |
Referenced by dr_may_alias_p().
#define MAX_DIM 2 |
The description of the grid of iterations that overlap. At most two loops are considered at the same time just now, hence at most two functions are needed. For each of the functions, we store the vector of coefficients, f[0] + x * f[1] + y * f[2] + ..., where x, y, ... are variables.
Referenced by conflict_fn().
#define NO_DEPENDENCE 0 |
Special values of N.
Referenced by conflict_fn_no_dependence(), and dump_conflict_function().
#define NOT_KNOWN (MAX_DIM + 1) |
Referenced by conflict_fn_not_known(), and dump_conflict_function().
#define SUB_ACCESS_FN | ( | SUB, | |
I ) |
Referenced by add_other_self_distances(), build_classic_dist_vector_1(), dump_data_dependence_relation(), initialize_data_dependence_relation(), invariant_access_functions(), same_access_functions(), and subscript_dependence_tester_1().
#define SUB_CONFLICTS_IN_A | ( | SUB | ) |
Referenced by add_distance_for_zero_overlaps(), compute_subscript_distance(), dump_subscript(), initialize_data_dependence_relation(), and subscript_dependence_tester_1().
#define SUB_CONFLICTS_IN_B | ( | SUB | ) |
Referenced by add_distance_for_zero_overlaps(), compute_subscript_distance(), dump_subscript(), initialize_data_dependence_relation(), and subscript_dependence_tester_1().
#define SUB_DISTANCE | ( | SUB | ) |
Referenced by build_classic_dist_vector_1(), compute_subscript_distance(), dump_subscript(), and initialize_data_dependence_relation().
#define SUB_LAST_CONFLICT | ( | SUB | ) |
Referenced by dump_subscript(), initialize_data_dependence_relation(), and subscript_dependence_tester_1().
typedef struct data_reference* data_reference_p |
typedef struct data_dependence_relation* ddr_p |
typedef HOST_WIDE_INT lambda_int |
An integer vector. A vector formally consists of an element of a vector space. A vector space is a set that is closed under vector addition and scalar multiplication. In this vector space, an element is a list of integers.
typedef lambda_vector* lambda_matrix |
An integer matrix. A matrix consists of m vectors of length n (IE all vectors are the same length).
typedef lambda_int* lambda_vector |
typedef struct subscript* subscript_p |
|
inline |
Returns true when the data reference DR the form "A[i] = ..." with a stride equal to its unit type size.
References DECL_BIT_FIELD, DR_REF, DR_STEP, fold_unary, TREE_CODE, tree_int_cst_equal(), TREE_OPERAND, TREE_TYPE, and TYPE_SIZE_UNIT.
|
extern |
|
extern |
Compute in DEPENDENCE_RELATIONS the data dependence graph for all the data references in DATAREFS, in the LOOP_NEST. When COMPUTE_SELF_AND_RR is FALSE, don't compute read-read and self relations. Return true when successful, i.e. data references number is small enough to be handled.
References a, b, compute_affine_dependence(), DR_IS_WRITE, FOR_EACH_VEC_ELT, i, initialize_data_dependence_relation(), data_dependence_relation::loop_nest, and NULL.
Referenced by compute_data_dependences_for_loop(), cond_if_else_store_replacement(), determine_loop_nest_reuse(), and vect_analyze_data_ref_dependences().
|
extern |
Returns true when the data dependences have been computed, false otherwise. Given a loop nest LOOP, the following vectors are returned: DATAREFS is initialized to all the array elements contained in this loop, DEPENDENCE_RELATIONS contains the relations between the data references. Compute read-read and self relations if COMPUTE_SELF_AND_READ_READ_DEPENDENCES is TRUE.
References chrec_dont_know, compute_all_dependences(), dependence_stats, dump_file, dump_flags, find_data_references_in_loop(), find_loop_nest(), datadep_stats::num_dependence_dependent, datadep_stats::num_dependence_independent, datadep_stats::num_dependence_tests, datadep_stats::num_dependence_undetermined, datadep_stats::num_miv, datadep_stats::num_miv_dependent, datadep_stats::num_miv_independent, datadep_stats::num_miv_unimplemented, datadep_stats::num_same_subscript_function, datadep_stats::num_siv, datadep_stats::num_siv_dependent, datadep_stats::num_siv_independent, datadep_stats::num_siv_unimplemented, datadep_stats::num_subscript_tests, datadep_stats::num_subscript_undetermined, datadep_stats::num_ziv, datadep_stats::num_ziv_dependent, datadep_stats::num_ziv_independent, datadep_stats::num_ziv_unimplemented, and TDF_STATS.
Referenced by loop_parallel_p(), tree_loop_unroll_and_jam(), and pcom_worker::tree_predictive_commoning_loop().
|
extern |
struct data_reference * create_data_ref | ( | edge | nest, |
loop_p | loop, | ||
tree | memref, | ||
gimple * | stmt, | ||
bool | is_read, | ||
bool | is_conditional_in_stmt ) |
Analyze memory reference MEMREF, which is accessed in STMT. The reference is a read if IS_READ is true, otherwise it is a write. IS_CONDITIONAL_IN_STMT indicates that the reference is conditional within STMT, i.e. that it might not occur even if STMT is executed and runs to completion. Return the data_reference description of MEMREF. NEST is the outermost loop in which the reference should be instantiated, LOOP is the loop in which the data reference should be analyzed.
References DR_ACCESS_FN, dr_analyze_alias(), dr_analyze_indices(), dr_analyze_innermost(), DR_BASE_ADDRESS, DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT, DR_BASE_OBJECT, DR_INIT, DR_INNERMOST, DR_IS_CONDITIONAL_IN_STMT, DR_IS_READ, DR_NUM_DIMENSIONS, DR_OFFSET, DR_OFFSET_ALIGNMENT, DR_REF, DR_STEP, DR_STEP_ALIGNMENT, DR_STMT, dump_file, dump_flags, i, data_reference::indices, data_reference::is_conditional_in_stmt, data_reference::is_read, NULL, print_generic_expr(), print_generic_stmt(), data_reference::stmt, TDF_DETAILS, and TDF_SLIM.
Referenced by determine_loop_nest_reuse(), dse_classify_store(), find_data_references_in_stmt(), graphite_find_data_references_in_stmt(), and vect_find_stmt_data_reference().
|
extern |
Create a conditional expression that represents the run-time checks for overlapping of address ranges represented by a list of data references pairs passed in ALIAS_PAIRS. Data references are in LOOP. The returned COND_EXPR is the conditional expression to be used in the if statement that controls which version of the loop gets executed at runtime.
References alias_pairs, boolean_type_node, create_intersect_range_checks(), DR_REF, dump_enabled_p(), dump_printf(), fold_build2, fold_defer_overflow_warnings(), fold_undefer_and_ignore_overflow_warnings(), gcc_assert, and MSG_NOTE.
Referenced by vect_create_cond_for_alias_checks(), and version_loop_by_alias_check().
A helper function computes order between two tree expressions T1 and T2. This is used in comparator functions sorting objects based on the order of tree expressions. The function returns -1, 0, or 1.
References CONVERT_EXPR_P, data_ref_compare_tree(), DECL_UID, gcc_unreachable, i, IS_EXPR_CODE_CLASS, NULL, POLY_INT_CST_P, SSA_NAME_VERSION, STRIP_USELESS_TYPE_CONVERSION, tcc_declaration, wi::to_poly_widest(), TREE_CODE, TREE_CODE_CLASS, tree_int_cst_compare(), TREE_OPERAND, TREE_OPERAND_LENGTH, TREE_STRING_LENGTH, and TREE_STRING_POINTER.
Referenced by comp_dr_with_seg_len_pair(), data_ref_compare_tree(), dr_align_group_sort_cmp(), dr_group_sort_cmp(), operator==(), loop_distribution::pg_add_dependence_edges(), prune_runtime_alias_test_list(), and vect_analyze_data_ref_accesses().
|
inline |
Return the dependence level for the DDR relation.
References DDR_DIST_VECT, DDR_DIST_VECTS, DDR_NB_LOOPS, DDR_NUM_DIST_VECTS, dependence_level(), and MIN.
|
extern |
Unified dump function for a DATA_REFERENCE structure.
References dump_data_reference().
|
extern |
References debug.
|
extern |
Unified dump into FILE all the data references from DATAREFS.
References dump_data_references().
|
extern |
References debug.
References dump_data_dependence_relations().
|
extern |
Dump to STDERR all the dependence relations from DDRS.
References dump_data_dependence_relations().
|
extern |
Print to STDERR the data_reference DR.
References dump_data_reference().
|
extern |
Dump into STDERR all the data references from DATAREFS.
References dump_data_references().
References dump_ddrs().
|
inline |
Returns the dependence level for a vector DIST of size LENGTH. LEVEL = 0 means a lexicographic dependence, i.e. a dependence due to the sequence of statements, not carried by any loop.
References i.
Referenced by loop_distribution::classify_builtin_ldst(), ddr_dependence_level(), and tree_loop_interchange::valid_data_dependences().
|
inline |
Return the alignment in bytes that DR is guaranteed to have at all times.
References dr_alignment(), and DR_INNERMOST.
|
extern |
Return the alignment in bytes that DRB is guaranteed to have at all times.
References innermost_loop_behavior::base_alignment, innermost_loop_behavior::base_misalignment, innermost_loop_behavior::init, integer_zerop(), MIN, innermost_loop_behavior::offset, innermost_loop_behavior::offset_alignment, innermost_loop_behavior::step, innermost_loop_behavior::step_alignment, and TREE_INT_CST_LOW.
Referenced by dr_alignment(), vect_vfa_align(), vectorizable_load(), and vectorizable_store().
opt_result dr_analyze_innermost | ( | innermost_loop_behavior * | drb, |
tree | ref, | ||
class loop * | loop, | ||
const gimple * | stmt ) |
Analyze the behavior of memory reference REF within STMT. There are two modes: - BB analysis. In this case we simply split the address into base, init and offset components, without reference to any containing loop. The resulting base and offset are general expressions and they can vary arbitrarily from one iteration of the containing loop to the next. The step is always zero. - loop analysis. In this case we analyze the reference both wrt LOOP and on the basis that the reference occurs (is "used") in LOOP; see the comment above analyze_scalar_evolution_in_loop for more information about this distinction. The base, init, offset and step fields are all invariant in LOOP. Perform BB analysis if LOOP is null, or if LOOP is the function's dummy outermost loop. In other cases perform loop analysis. Return true if the analysis succeeded and store the results in DRB if so. BB analysis can only fail for bitfield or reversed-storage accesses.
References affine_iv::base, innermost_loop_behavior::base_address, innermost_loop_behavior::base_alignment, innermost_loop_behavior::base_misalignment, build_fold_addr_expr, canonicalize_base_object_address(), dump_file, dump_flags, opt_result::failure_at(), fold_convert, poly_int< N, C >::force_shwi(), gcc_assert, get_inner_reference(), get_object_alignment_1(), get_pointer_alignment_1(), highest_pow2_factor(), innermost_loop_behavior::init, integer_zerop(), may_be_nonaddressable_p(), mem_ref_offset(), affine_iv::no_overflow, NULL_TREE, loop::num, innermost_loop_behavior::offset, innermost_loop_behavior::offset_alignment, simple_iv(), size_binop, sizetype, split_constant_offset(), ssize_int, ssizetype, affine_iv::step, innermost_loop_behavior::step, innermost_loop_behavior::step_alignment, opt_result::success(), TDF_DETAILS, TREE_CODE, TREE_INT_CST_LOW, TREE_OPERAND, and wide_int_to_tree().
Referenced by create_data_ref(), pcom_worker::find_looparound_phi(), and vect_analyze_data_refs().
|
extern |
Return a value that is negative iff DR has a negative step.
References dr_step_indicator().
Referenced by create_waw_or_war_checks(), dr_known_forward_stride_p(), get_segment_min_max(), and prune_runtime_alias_test_list().
|
extern |
Check if DRA and DRB have equal offsets.
References dr_equal_offsets_p1(), and DR_OFFSET.
|
extern |
Return true if DR is known to have a nonnegative (but possibly zero) step.
References boolean_type_node, dr_direction_indicator(), fold_binary, fold_convert, integer_zerop(), ssize_int, and ssizetype.
Referenced by vect_prune_runtime_alias_test_list().
|
extern |
Returns false if we can prove that data references A and B do not alias, true otherwise. If LOOP_NEST is false no cross-iteration aliases are considered.
References a, aff_comb_cannot_overlap_p(), aff_combination_add(), aff_combination_scale(), alias_sets_conflict_p(), b, build_fold_addr_expr, DR_BASE_ADDRESS, DR_BASE_OBJECT, DR_INIT, DR_IS_READ, DR_IS_WRITE, DR_OFFSET, DR_REF, DR_STEP, DR_UNCONSTRAINED_BASE, gcc_assert, get_alias_set(), get_inner_reference_aff(), handled_component_p(), integer_zerop(), MR_DEPENDENCE_BASE, MR_DEPENDENCE_CLIQUE, operand_equal_p(), loop::owned_clique, poly_int_tree_p(), ptr_derefs_may_alias_p(), refs_anti_dependent_p(), refs_may_alias_p(), refs_output_dependent_p(), wi::to_poly_widest(), TREE_CODE, TREE_OPERAND, TREE_TYPE, and TYPE_SIZE_UNIT.
Referenced by dse_classify_store(), initialize_data_dependence_relation(), and vect_analyze_early_break_dependences().
|
extern |
Return a value that is zero iff DR has a zero step.
References dr_step_indicator().
Referenced by vect_analyze_data_ref_dependence().
Dump into FILE all the dependence relations from DDRS.
References dump_data_dependence_relation().
Referenced by loop_distribution::break_alias_scc_partitions(), debug(), debug_data_dependence_relations(), loop_parallel_p(), tree_loop_unroll_and_jam(), and pcom_worker::tree_predictive_commoning_loop().
|
extern |
Dump function for a DATA_REFERENCE structure.
References DR_ACCESS_FN, DR_BASE_OBJECT, DR_NUM_DIMENSIONS, DR_REF, DR_STMT, gimple_bb(), i, print_generic_stmt(), and print_gimple_stmt().
Referenced by compute_affine_dependence(), debug(), debug_data_reference(), dump_data_dependence_relation(), and dump_data_references().
|
extern |
Search the data references in LOOP, and record the information into DATAREFS. Returns chrec_dont_know when failing to analyze a difficult case, returns NULL_TREE otherwise.
References chrec_dont_know, find_data_references_in_stmt(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), and NULL_TREE.
Referenced by cond_if_else_store_replacement(), and find_data_references_in_loop().
tree find_data_references_in_loop | ( | class loop * | loop, |
vec< data_reference_p > * | datarefs ) |
Search the data references in LOOP, and record the information into DATAREFS. Returns chrec_dont_know when failing to analyze a difficult case, returns NULL_TREE otherwise. TODO: This function should be made smarter so that it can handle address arithmetic as if they were array accesses, etc.
References chrec_dont_know, find_data_references_in_bb(), free(), get_loop_body_in_dom_order(), i, NULL_TREE, and loop::num_nodes.
Referenced by compute_data_dependences_for_loop(), and tree_if_conversion().
|
extern |
Stores the data references in STMT to DATAREFS. If there is an unanalyzable reference, returns false, otherwise returns true. NEST is the outermost loop of the loop nest in which the references should be analyzed.
References create_data_ref(), opt_result::failure_at(), gcc_assert, get_references_in_stmt(), loop_containing_stmt(), loop_preheader_edge(), NULL, and opt_result::success().
Referenced by loop_distribution::create_rdg_vertices(), find_data_references_in_bb(), and vect_find_stmt_data_reference().
Return false when the LOOP is not well nested. Otherwise return true and insert in LOOP_NEST the loops of the nest. LOOP_NEST will contain the loops from the outermost to the innermost, as they will appear in the classic distance vector.
References find_loop_nest_1(), and loop::inner.
Referenced by compute_data_dependences_for_loop(), determine_loop_nest_reuse(), loop_distribution::distribute_loop(), and vect_analyze_loop().
|
extern |
Frees data reference DR.
References indices::access_fns, data_reference::alt_indices, indices::base_object, DR_ACCESS_FNS, and free().
Referenced by dse_classify_store(), free_data_refs(), tree_if_conversion(), and vect_find_stmt_data_reference().
|
extern |
Free the memory used by the data references from DATAREFS.
References free_data_ref().
Referenced by cond_if_else_store_replacement(), determine_loop_nest_reuse(), loop_distribution::distribute_loop(), loop_distribution::execute(), free_data_refs_with_aux(), loop_parallel_p(), tree_loop_unroll_and_jam(), pcom_worker::~pcom_worker(), and vec_info_shared::~vec_info_shared().
|
extern |
Free the memory used by a data dependence relation DDR.
References DDR_DIR_VECTS, DDR_DIST_VECTS, DDR_SUBSCRIPTS, free(), free_subscripts(), and NULL.
Referenced by loop_distribution::distribute_loop(), free_dependence_relations(), vect_slp_analyze_load_dependences(), and vect_slp_analyze_store_dependences().
Free the memory used by the data dependence relations from DEPENDENCE_RELATIONS.
References free_dependence_relation().
Referenced by cond_if_else_store_replacement(), determine_loop_nest_reuse(), loop_parallel_p(), tree_loop_unroll_and_jam(), pcom_worker::~pcom_worker(), and vec_info_shared::~vec_info_shared().
Return the object whose alignment would need to be changed in order to increase the alignment of ADDR. Store the maximum achievable alignment in *MAX_ALIGNMENT.
References get_base_for_alignment_1(), MAX_OFILE_ALIGNMENT, TREE_CODE, and TREE_OPERAND.
Referenced by vect_compute_data_ref_alignment().
|
extern |
Stores the data references in STMT to DATAREFS. If there is an unanalyzable reference, returns false, otherwise returns true. NEST is the outermost loop of the loop nest in which the references should be instantiated, LOOP is the loop in which the references should be analyzed.
References create_data_ref(), gcc_assert, get_references_in_stmt(), and NULL.
Return the index of the variable VAR in the LOOP_NEST array.
References gcc_unreachable, and loop::num.
Referenced by add_multivariate_self_dist(), add_other_self_distances(), build_classic_dist_vector_1(), loop_distribution::pg_add_dependence_edges(), vect_analyze_data_ref_dependence(), and vect_prune_runtime_alias_test_list().
|
extern |
Initialize a data dependence relation between data accesses A and B. NB_LOOPS is the number of loops surrounding the references: the size of the classic distance/direction vectors.
References a, b, chrec_dont_know, chrec_known, DDR_A, DDR_ARE_DEPENDENT, DDR_B, DDR_DIR_VECTS, DDR_DIST_VECTS, DDR_LOOP_NEST, DDR_SUBSCRIPTS, dr_may_alias_p(), initialize_data_dependence_relation(), data_dependence_relation::loop_nest, and NULL.
Returns true when all the dependences are computable.
References chrec_dont_know, DDR_ARE_DEPENDENT, FOR_EACH_VEC_ELT, and i.
|
inline |
Allocate a matrix of M rows x N cols.
References i.
Referenced by analyze_subscript_affine_affine(), and lambda_trans_matrix_new().
|
inline |
Clear out vector VEC1 of length SIZE.
Referenced by lambda_matrix_vector_mult(), and lambda_vector_mult_const().
|
inline |
|
inline |
Returns true when the vector V is lexicographically positive, in other words, when the first nonzero element is positive.
References i.
Referenced by adjust_unroll_factor(), build_classic_dist_vector(), and lambda_transform_legal_p().
|
inline |
Allocate a new vector of given SIZE.
References ggc_cleared_vec_alloc().
Referenced by add_multivariate_self_dist(), add_other_self_distances(), add_outer_distances(), build_classic_dir_vector(), build_classic_dist_vector(), build_classic_dist_vector_1(), insert_innermost_unit_dist_vector(), and lambda_transform_legal_p().
|
inline |
Return true if vector VEC1 of length SIZE is the zero vector.
References i.
Referenced by adjust_unroll_factor(), loop_distribution::data_dep_in_cycle_p(), determine_loop_nest_reuse(), and loop_distribution::pg_add_dependence_edges().
Returns true if the loop-nest has any data reference.
References free(), get_loop_body(), get_references_in_stmt(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), i, and loop::num_nodes.
|
extern |
Merge alias checks recorded in ALIAS_PAIRS and remove redundant ones. FACTOR is number of iterations that each data reference is accessed. Basically, for each pair of dependent data refs store_ptr_0 & load_ptr_0, we create an expression: ((store_ptr_0 + store_segment_length_0) <= load_ptr_0) || (load_ptr_0 + load_segment_length_0) <= store_ptr_0)) for aliasing checks. However, in some cases we can decrease the number of checks by combining two checks into one. For example, suppose we have another pair of data refs store_ptr_0 & load_ptr_1, and if the following condition is satisfied: load_ptr_0 < load_ptr_1 && load_ptr_1 - load_ptr_0 - load_segment_length_0 < store_segment_length_0 (this condition means, in each iteration of vectorized loop, the accessed memory of store_ptr_0 cannot be between the memory of load_ptr_0 and load_ptr_1.) we then can use only the following expression to finish the alising checks between store_ptr_0 & load_ptr_0 and store_ptr_0 & load_ptr_1: ((store_ptr_0 + store_segment_length_0) <= load_ptr_0) || (load_ptr_1 + load_segment_length_1 <= store_ptr_0)) Note that we only consider that load_ptr_0 and load_ptr_1 have the same basic address.
References dr_with_seg_len::access_size, alias_pairs, dr_with_seg_len::align, build_int_cst(), comp_dr_with_seg_len_pair(), data_ref_compare_tree(), dr_with_seg_len::dr, DR_ALIAS_ARBITRARY, DR_ALIAS_MIXED_STEPS, DR_ALIAS_SWAPPED, DR_ALIAS_UNSWAPPED, DR_BASE_ADDRESS, dr_direction_indicator(), DR_INIT, DR_OFFSET, DR_REF, DR_STEP, dump_alias_pair(), dump_enabled_p(), dump_printf(), dr_with_seg_len_pair_t::first, dr_with_seg_len_pair_t::flags, FOR_EACH_VEC_ELT, i, last, maybe_gt, MIN, MSG_NOTE, operand_equal_p(), poly_int_tree_p(), dr_with_seg_len_pair_t::second, dr_with_seg_len::seg_len, TREE_CODE, tree_int_cst_sgn(), and TREE_TYPE.
Referenced by compute_alias_check_pairs(), and vect_prune_runtime_alias_test_list().
|
extern |
Return TRUE it's possible to resolve data dependence DDR by runtime alias check.
References DDR_A, DDR_B, DR_BASE_ADDRESS, DR_REF, DR_STMT, dump_enabled_p(), dump_printf(), opt_result::failure_at(), loop::inner, MSG_NOTE, NULL, opt_result::success(), TREE_TYPE, and TYPE_ADDR_SPACE.
Referenced by loop_distribution::data_dep_in_cycle_p(), and vect_mark_for_runtime_alias_test().
|
inline |
Return true when the data references A and B are accessing the same memory object with the same access functions. Optionally skip the last OFFSET dimensions in the data reference.
References a, b, DR_ACCESS_FN, DR_NUM_DIMENSIONS, DR_REF, eq_evolutions_p(), i, offset, operand_equal_p(), and same_data_refs_base_objects().
Referenced by compatible_complex_nodes_p(), and vect_cond_store_pattern_same_ref().
|
inline |
Return true when the base objects of data references A and B are the same memory object.
References a, b, DR_BASE_OBJECT, DR_NUM_DIMENSIONS, and operand_equal_p().
Referenced by same_data_refs().
Expresses EXP as VAR + OFF, where OFF is a constant. VAR has the same type as EXP while OFF has type ssizetype.
References cache, exp(), fold_convert, split_constant_offset(), and TREE_TYPE.
const unsigned int DR_ALIAS_ARBITRARY = 1U << 3 |
const unsigned int DR_ALIAS_MIXED_STEPS = 1U << 6 |
Referenced by create_intersect_range_checks_index(), dump_alias_pair(), and prune_runtime_alias_test_list().
const unsigned int DR_ALIAS_RAW = 1U << 0 |
Flags that describe a potential alias between two dr_with_seg_lens. In general, each pair of dr_with_seg_lens represents a composite of multiple access pairs P, so testing flags like DR_IS_READ on the DRs does not give meaningful information. DR_ALIAS_RAW: There is a pair in P for which the second reference is a read and the first is a write. DR_ALIAS_WAR: There is a pair in P for which the second reference is a write and the first is a read. DR_ALIAS_WAW: There is a pair in P for which both references are writes. DR_ALIAS_ARBITRARY: Either (a) it isn't possible to classify one pair in P as RAW, WAW or WAR; or (b) there is a pair in P that breaks the ordering assumption below. This flag overrides the RAW, WAR and WAW flags above. DR_ALIAS_UNSWAPPED: DR_ALIAS_SWAPPED: Temporary flags that indicate whether there is a pair P whose DRs have or haven't been swapped around. DR_ALIAS_MIXED_STEPS: The DR_STEP for one of the data references in the pair does not accurately describe that reference for all members of P. (Note that the flag does not say anything about whether the DR_STEPs of the two references in the pair are the same.) The ordering assumption mentioned above is that for every pair (DR_A, DR_B) in P: (1) The original code accesses n elements for DR_A and n elements for DR_B, interleaved as follows: one access of size DR_A.access_size at DR_A.dr one access of size DR_B.access_size at DR_B.dr one access of size DR_A.access_size at DR_A.dr + STEP_A one access of size DR_B.access_size at DR_B.dr + STEP_B one access of size DR_A.access_size at DR_A.dr + STEP_A * 2 one access of size DR_B.access_size at DR_B.dr + STEP_B * 2 ... (2) The new code accesses the same data in exactly two chunks: one group of accesses spanning |DR_A.seg_len| + DR_A.access_size one group of accesses spanning |DR_B.seg_len| + DR_B.access_size A pair might break this assumption if the DR_A and DR_B accesses in the original or the new code are mingled in some way. For example, if DR_A.access_size represents the effect of two individual writes to nearby locations, the pair breaks the assumption if those writes occur either side of the access for DR_B. Note that DR_ALIAS_ARBITRARY describes whether the ordering assumption fails to hold for any individual pair in P. If the assumption *does* hold for every pair in P, it doesn't matter whether it holds for the composite pair or not. In other words, P should represent the complete set of pairs that the composite pair is testing, so only the ordering of two accesses in the same member of P matters.
Referenced by create_ifn_alias_checks(), dr_with_seg_len_pair_t::dr_with_seg_len_pair_t(), and dump_alias_pair().
const unsigned int DR_ALIAS_SWAPPED = 1U << 4 |
Referenced by dump_alias_pair(), and prune_runtime_alias_test_list().
const unsigned int DR_ALIAS_UNSWAPPED = 1U << 5 |
Referenced by dump_alias_pair(), and prune_runtime_alias_test_list().
const unsigned int DR_ALIAS_WAR = 1U << 1 |
const unsigned int DR_ALIAS_WAW = 1U << 2 |