Mercurial > hg > CbC > CbC_gcc
diff gcc/tree-data-ref.h @ 132:d34655255c78
update gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 10:21:07 +0900 |
parents | 84e7813d76e9 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/tree-data-ref.h Thu Oct 25 08:08:40 2018 +0900 +++ b/gcc/tree-data-ref.h Thu Oct 25 10:21:07 2018 +0900 @@ -1,5 +1,5 @@ /* Data references and dependences detectors. - Copyright (C) 2003-2017 Free Software Foundation, Inc. + Copyright (C) 2003-2018 Free Software Foundation, Inc. Contributed by Sebastian Pop <pop@cri.ensmp.fr> This file is part of GCC. @@ -23,6 +23,7 @@ #include "graphds.h" #include "tree-chrec.h" +#include "opt-problem.h" /* innermost_loop_behavior describes the evolution of the address of the memory @@ -203,11 +204,20 @@ struct dr_with_seg_len { - dr_with_seg_len (data_reference_p d, tree len) - : dr (d), seg_len (len) {} + dr_with_seg_len (data_reference_p d, tree len, unsigned HOST_WIDE_INT size, + unsigned int a) + : dr (d), seg_len (len), access_size (size), align (a) {} data_reference_p dr; + /* The offset of the last access that needs to be checked minus + the offset of the first. */ tree seg_len; + /* A value that, when added to abs (SEG_LEN), gives the total number of + bytes in the segment. */ + poly_uint64 access_size; + /* The minimum common alignment of DR's start address, SEG_LEN and + ACCESS_SIZE. */ + unsigned int align; }; /* This struct contains two dr_with_seg_len objects with aliasing data @@ -412,7 +422,8 @@ #define DDR_COULD_BE_INDEPENDENT_P(DDR) (DDR)->could_be_independent_p -bool dr_analyze_innermost (innermost_loop_behavior *, tree, struct loop *); +opt_result dr_analyze_innermost (innermost_loop_behavior *, tree, + struct loop *, const gimple *); extern bool compute_data_dependences_for_loop (struct loop *, bool, vec<loop_p> *, vec<data_reference_p> *, @@ -434,8 +445,8 @@ extern void free_dependence_relations (vec<ddr_p> ); extern void free_data_ref (data_reference_p); extern void free_data_refs (vec<data_reference_p> ); -extern bool find_data_references_in_stmt (struct loop *, gimple *, - vec<data_reference_p> *); +extern opt_result find_data_references_in_stmt (struct loop *, gimple *, + vec<data_reference_p> *); extern bool graphite_find_data_references_in_stmt (edge, loop_p, gimple *, vec<data_reference_p> *); tree find_data_references_in_loop (struct loop *, vec<data_reference_p> *); @@ -454,6 +465,7 @@ extern tree find_data_references_in_bb (struct loop *, basic_block, vec<data_reference_p> *); extern unsigned int dr_alignment (innermost_loop_behavior *); +extern tree get_base_for_alignment (tree, unsigned int *); /* Return the alignment in bytes that DR is guaranteed to have at all times. */ @@ -469,12 +481,16 @@ extern bool dr_equal_offsets_p (struct data_reference *, struct data_reference *); -extern bool runtime_alias_check_p (ddr_p, struct loop *, bool); +extern opt_result runtime_alias_check_p (ddr_p, struct loop *, bool); extern int data_ref_compare_tree (tree, tree); extern void prune_runtime_alias_test_list (vec<dr_with_seg_len_pair_t> *, - unsigned HOST_WIDE_INT); + poly_uint64); extern void create_runtime_alias_checks (struct loop *, vec<dr_with_seg_len_pair_t> *, tree*); +extern tree dr_direction_indicator (struct data_reference *); +extern tree dr_zero_step_indicator (struct data_reference *); +extern bool dr_known_forward_stride_p (struct data_reference *); + /* Return true when the base objects of data references A and B are the same memory object. */