* [PATCH GCC][1/6]Move compare_tree to tree.c and expose the interface. @ 2017-05-23 16:23 Bin Cheng 2017-05-26 11:15 ` Richard Biener 0 siblings, 1 reply; 5+ messages in thread From: Bin Cheng @ 2017-05-23 16:23 UTC (permalink / raw) To: gcc-patches; +Cc: nd [-- Attachment #1: Type: text/plain, Size: 735 bytes --] Hi, This patch set factors out runtime alias check code from tree-vect-data-refs.c and tree-vect-loop-manip.c as general interfaces in tree-data-ref.c. With this change other optimizers like tree loop distribution could version loop wrto the runtime alias checks. During this work, I also found current code has issues with negative DR_STEP. This patch set fixes the issue as tracked in PR80815. This is the first patch simply moves compare_tree to tree.c and exposes it. Bootstrap and test on x86_64 and AArch64, is it OK? Thanks, bin 2017-05-22 Bin Cheng <bin.cheng@arm.com> * tree-vect-data-refs.c (compare_tree): Move ... * tree.c (compare_tree): ... to here. * tree.h (compare_tree): New decalaration. [-- Attachment #2: 0001-compare_tree-interface-20170515.txt --] [-- Type: text/plain, Size: 5271 bytes --] From 2b993c1aaada767cbbda4e73010d48b0b8347ef3 Mon Sep 17 00:00:00 2001 From: Bin Cheng <binche01@e108451-lin.cambridge.arm.com> Date: Fri, 19 May 2017 12:49:38 +0100 Subject: [PATCH 1/6] compare_tree-interface-20170515.txt --- gcc/tree-vect-data-refs.c | 77 ----------------------------------------------- gcc/tree.c | 74 +++++++++++++++++++++++++++++++++++++++++++++ gcc/tree.h | 1 + 3 files changed, 75 insertions(+), 77 deletions(-) diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 67cc969..7b835ae 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -2574,83 +2574,6 @@ vect_analyze_data_ref_access (struct data_reference *dr) return vect_analyze_group_access (dr); } - - -/* A helper function used in the comparator function to sort data - references. T1 and T2 are two data references to be compared. - The function returns -1, 0, or 1. */ - -static int -compare_tree (tree t1, tree t2) -{ - int i, cmp; - enum tree_code code; - char tclass; - - if (t1 == t2) - return 0; - if (t1 == NULL) - return -1; - if (t2 == NULL) - return 1; - - STRIP_NOPS (t1); - STRIP_NOPS (t2); - - if (TREE_CODE (t1) != TREE_CODE (t2)) - return TREE_CODE (t1) < TREE_CODE (t2) ? -1 : 1; - - code = TREE_CODE (t1); - switch (code) - { - /* For const values, we can just use hash values for comparisons. */ - case INTEGER_CST: - case REAL_CST: - case FIXED_CST: - case STRING_CST: - case COMPLEX_CST: - case VECTOR_CST: - { - hashval_t h1 = iterative_hash_expr (t1, 0); - hashval_t h2 = iterative_hash_expr (t2, 0); - if (h1 != h2) - return h1 < h2 ? -1 : 1; - break; - } - - case SSA_NAME: - cmp = compare_tree (SSA_NAME_VAR (t1), SSA_NAME_VAR (t2)); - if (cmp != 0) - return cmp; - - if (SSA_NAME_VERSION (t1) != SSA_NAME_VERSION (t2)) - return SSA_NAME_VERSION (t1) < SSA_NAME_VERSION (t2) ? -1 : 1; - break; - - default: - tclass = TREE_CODE_CLASS (code); - - /* For var-decl, we could compare their UIDs. */ - if (tclass == tcc_declaration) - { - if (DECL_UID (t1) != DECL_UID (t2)) - return DECL_UID (t1) < DECL_UID (t2) ? -1 : 1; - break; - } - - /* For expressions with operands, compare their operands recursively. */ - for (i = TREE_OPERAND_LENGTH (t1) - 1; i >= 0; --i) - { - cmp = compare_tree (TREE_OPERAND (t1, i), TREE_OPERAND (t2, i)); - if (cmp != 0) - return cmp; - } - } - - return 0; -} - - /* Compare two data-references DRA and DRB to group them into chunks suitable for grouping. */ diff --git a/gcc/tree.c b/gcc/tree.c index b76b521..c9b0615 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -7635,6 +7635,80 @@ compare_tree_int (const_tree t, unsigned HOST_WIDE_INT u) return 1; } +/* A helper function computes order between two tree epxressions 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. */ + +int +compare_tree (tree t1, tree t2) +{ + int i, cmp; + enum tree_code code; + char tclass; + + if (t1 == t2) + return 0; + if (t1 == NULL) + return -1; + if (t2 == NULL) + return 1; + + STRIP_NOPS (t1); + STRIP_NOPS (t2); + + if (TREE_CODE (t1) != TREE_CODE (t2)) + return TREE_CODE (t1) < TREE_CODE (t2) ? -1 : 1; + + code = TREE_CODE (t1); + switch (code) + { + /* For const values, we can just use hash values for comparisons. */ + case INTEGER_CST: + case REAL_CST: + case FIXED_CST: + case STRING_CST: + case COMPLEX_CST: + case VECTOR_CST: + { + hashval_t h1 = iterative_hash_expr (t1, 0); + hashval_t h2 = iterative_hash_expr (t2, 0); + if (h1 != h2) + return h1 < h2 ? -1 : 1; + break; + } + + case SSA_NAME: + cmp = compare_tree (SSA_NAME_VAR (t1), SSA_NAME_VAR (t2)); + if (cmp != 0) + return cmp; + + if (SSA_NAME_VERSION (t1) != SSA_NAME_VERSION (t2)) + return SSA_NAME_VERSION (t1) < SSA_NAME_VERSION (t2) ? -1 : 1; + break; + + default: + tclass = TREE_CODE_CLASS (code); + + /* For var-decl, we could compare their UIDs. */ + if (tclass == tcc_declaration) + { + if (DECL_UID (t1) != DECL_UID (t2)) + return DECL_UID (t1) < DECL_UID (t2) ? -1 : 1; + break; + } + + /* For expressions with operands, compare their operands recursively. */ + for (i = TREE_OPERAND_LENGTH (t1) - 1; i >= 0; --i) + { + cmp = compare_tree (TREE_OPERAND (t1, i), TREE_OPERAND (t2, i)); + if (cmp != 0) + return cmp; + } + } + + return 0; +} + /* Return true if SIZE represents a constant size that is in bounds of what the middle-end and the backend accepts (covering not more than half of the address-space). */ diff --git a/gcc/tree.h b/gcc/tree.h index c6e883c..732ae09 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -4819,6 +4819,7 @@ static inline hashval_t iterative_hash_expr(const_tree tree, hashval_t seed) } extern int compare_tree_int (const_tree, unsigned HOST_WIDE_INT); +extern int compare_tree (tree, tree); extern int type_list_equal (const_tree, const_tree); extern int chain_member (const_tree, const_tree); extern void dump_tree_statistics (void); -- 1.9.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH GCC][1/6]Move compare_tree to tree.c and expose the interface. 2017-05-23 16:23 [PATCH GCC][1/6]Move compare_tree to tree.c and expose the interface Bin Cheng @ 2017-05-26 11:15 ` Richard Biener 2017-05-26 11:31 ` Bin.Cheng 0 siblings, 1 reply; 5+ messages in thread From: Richard Biener @ 2017-05-26 11:15 UTC (permalink / raw) To: Bin Cheng; +Cc: gcc-patches, nd On Tue, May 23, 2017 at 6:22 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: > Hi, > This patch set factors out runtime alias check code from tree-vect-data-refs.c > and tree-vect-loop-manip.c as general interfaces in tree-data-ref.c. With this > change other optimizers like tree loop distribution could version loop wrto the > runtime alias checks. During this work, I also found current code has issues > with negative DR_STEP. This patch set fixes the issue as tracked in PR80815. > > This is the first patch simply moves compare_tree to tree.c and exposes it. > Bootstrap and test on x86_64 and AArch64, is it OK? I think the name is quite bad for an exported function given for INTEGER_CSTs it doesn't return anything resembling a comparison result. Also (not your fault) it doesn't seem to handle hash collisions nor have a suitable fallback for trees it doesn't handle. I don't have a good suggestion for the name but tree.c exported fns should have higher standards regarding their implementation... Richard. > Thanks, > bin > > 2017-05-22 Bin Cheng <bin.cheng@arm.com> > > * tree-vect-data-refs.c (compare_tree): Move ... > * tree.c (compare_tree): ... to here. > * tree.h (compare_tree): New decalaration. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH GCC][1/6]Move compare_tree to tree.c and expose the interface. 2017-05-26 11:15 ` Richard Biener @ 2017-05-26 11:31 ` Bin.Cheng 2017-05-26 11:51 ` Richard Biener 0 siblings, 1 reply; 5+ messages in thread From: Bin.Cheng @ 2017-05-26 11:31 UTC (permalink / raw) To: Richard Biener; +Cc: gcc-patches On Fri, May 26, 2017 at 12:14 PM, Richard Biener <richard.guenther@gmail.com> wrote: > On Tue, May 23, 2017 at 6:22 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: >> Hi, >> This patch set factors out runtime alias check code from tree-vect-data-refs.c >> and tree-vect-loop-manip.c as general interfaces in tree-data-ref.c. With this >> change other optimizers like tree loop distribution could version loop wrto the >> runtime alias checks. During this work, I also found current code has issues >> with negative DR_STEP. This patch set fixes the issue as tracked in PR80815. >> >> This is the first patch simply moves compare_tree to tree.c and exposes it. >> Bootstrap and test on x86_64 and AArch64, is it OK? > > I think the name is quite bad for an exported function given for INTEGER_CSTs > it doesn't return anything resembling a comparison result. Also (not > your fault) > it doesn't seem to handle hash collisions nor have a suitable fallback for > trees it doesn't handle. > > I don't have a good suggestion for the name but tree.c exported fns should > have higher standards regarding their implementation... Hmm, I don't have idea to generalize it for the moment, so OK to rename it to data_ref_compare_tree and move it to tree-data-ref.c? It needs to be external symbol though. Thanks, bin > > Richard. > > > >> Thanks, >> bin >> >> 2017-05-22 Bin Cheng <bin.cheng@arm.com> >> >> * tree-vect-data-refs.c (compare_tree): Move ... >> * tree.c (compare_tree): ... to here. >> * tree.h (compare_tree): New decalaration. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH GCC][1/6]Move compare_tree to tree.c and expose the interface. 2017-05-26 11:31 ` Bin.Cheng @ 2017-05-26 11:51 ` Richard Biener 2017-05-26 14:12 ` Bin.Cheng 0 siblings, 1 reply; 5+ messages in thread From: Richard Biener @ 2017-05-26 11:51 UTC (permalink / raw) To: Bin.Cheng; +Cc: gcc-patches On Fri, May 26, 2017 at 1:30 PM, Bin.Cheng <amker.cheng@gmail.com> wrote: > On Fri, May 26, 2017 at 12:14 PM, Richard Biener > <richard.guenther@gmail.com> wrote: >> On Tue, May 23, 2017 at 6:22 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: >>> Hi, >>> This patch set factors out runtime alias check code from tree-vect-data-refs.c >>> and tree-vect-loop-manip.c as general interfaces in tree-data-ref.c. With this >>> change other optimizers like tree loop distribution could version loop wrto the >>> runtime alias checks. During this work, I also found current code has issues >>> with negative DR_STEP. This patch set fixes the issue as tracked in PR80815. >>> >>> This is the first patch simply moves compare_tree to tree.c and exposes it. >>> Bootstrap and test on x86_64 and AArch64, is it OK? >> >> I think the name is quite bad for an exported function given for INTEGER_CSTs >> it doesn't return anything resembling a comparison result. Also (not >> your fault) >> it doesn't seem to handle hash collisions nor have a suitable fallback for >> trees it doesn't handle. >> >> I don't have a good suggestion for the name but tree.c exported fns should >> have higher standards regarding their implementation... > Hmm, I don't have idea to generalize it for the moment, so OK to > rename it to data_ref_compare_tree and move it to tree-data-ref.c? It > needs to be external symbol though. Works for me. Richard. > Thanks, > bin >> >> Richard. >> >> >> >>> Thanks, >>> bin >>> >>> 2017-05-22 Bin Cheng <bin.cheng@arm.com> >>> >>> * tree-vect-data-refs.c (compare_tree): Move ... >>> * tree.c (compare_tree): ... to here. >>> * tree.h (compare_tree): New decalaration. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH GCC][1/6]Move compare_tree to tree.c and expose the interface. 2017-05-26 11:51 ` Richard Biener @ 2017-05-26 14:12 ` Bin.Cheng 0 siblings, 0 replies; 5+ messages in thread From: Bin.Cheng @ 2017-05-26 14:12 UTC (permalink / raw) To: Richard Biener; +Cc: gcc-patches [-- Attachment #1: Type: text/plain, Size: 2290 bytes --] On Fri, May 26, 2017 at 12:50 PM, Richard Biener <richard.guenther@gmail.com> wrote: > On Fri, May 26, 2017 at 1:30 PM, Bin.Cheng <amker.cheng@gmail.com> wrote: >> On Fri, May 26, 2017 at 12:14 PM, Richard Biener >> <richard.guenther@gmail.com> wrote: >>> On Tue, May 23, 2017 at 6:22 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: >>>> Hi, >>>> This patch set factors out runtime alias check code from tree-vect-data-refs.c >>>> and tree-vect-loop-manip.c as general interfaces in tree-data-ref.c. With this >>>> change other optimizers like tree loop distribution could version loop wrto the >>>> runtime alias checks. During this work, I also found current code has issues >>>> with negative DR_STEP. This patch set fixes the issue as tracked in PR80815. >>>> >>>> This is the first patch simply moves compare_tree to tree.c and exposes it. >>>> Bootstrap and test on x86_64 and AArch64, is it OK? >>> >>> I think the name is quite bad for an exported function given for INTEGER_CSTs >>> it doesn't return anything resembling a comparison result. Also (not >>> your fault) >>> it doesn't seem to handle hash collisions nor have a suitable fallback for >>> trees it doesn't handle. >>> >>> I don't have a good suggestion for the name but tree.c exported fns should >>> have higher standards regarding their implementation... >> Hmm, I don't have idea to generalize it for the moment, so OK to >> rename it to data_ref_compare_tree and move it to tree-data-ref.c? It >> needs to be external symbol though. > > Works for me. Thanks, I updated and committed below patch. Thanks, bin 2017-05-22 Bin Cheng <bin.cheng@arm.com> * tree-vect-data-refs.c (compare_tree): Rename and move ... * tree-data-ref.c (data_ref_compare_tree): ... to here. * tree-data-ref.h (data_ref_compare_tree): New decalaration. * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses. (operator==, comp_dr_with_seg_len_pair): Ditto. (vect_prune_runtime_alias_test_list): Ditto. > > Richard. > >> Thanks, >> bin >>> >>> Richard. >>> >>> >>> >>>> Thanks, >>>> bin >>>> >>>> 2017-05-22 Bin Cheng <bin.cheng@arm.com> >>>> >>>> * tree-vect-data-refs.c (compare_tree): Move ... >>>> * tree.c (compare_tree): ... to here. >>>> * tree.h (compare_tree): New decalaration. [-- Attachment #2: 0001-compare_tree-interface-20170516.txt --] [-- Type: text/plain, Size: 9861 bytes --] From ffbc71384ed53275847254e588353d9a176b70a1 Mon Sep 17 00:00:00 2001 From: Bin Cheng <binche01@e108451-lin.cambridge.arm.com> Date: Fri, 19 May 2017 12:49:38 +0100 Subject: [PATCH 1/6] compare_tree-interface-20170516.txt --- gcc/tree-data-ref.c | 75 ++++++++++++++++++++++++++++ gcc/tree-data-ref.h | 1 + gcc/tree-vect-data-refs.c | 122 ++++++++++------------------------------------ 3 files changed, 103 insertions(+), 95 deletions(-) diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 2480f4e..6a32a65 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -1107,6 +1107,81 @@ create_data_ref (loop_p nest, loop_p loop, tree memref, gimple *stmt, return dr; } +/* A helper function computes order between two tree epxressions 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. */ + +int +data_ref_compare_tree (tree t1, tree t2) +{ + int i, cmp; + enum tree_code code; + char tclass; + + if (t1 == t2) + return 0; + if (t1 == NULL) + return -1; + if (t2 == NULL) + return 1; + + STRIP_NOPS (t1); + STRIP_NOPS (t2); + + if (TREE_CODE (t1) != TREE_CODE (t2)) + return TREE_CODE (t1) < TREE_CODE (t2) ? -1 : 1; + + code = TREE_CODE (t1); + switch (code) + { + /* For const values, we can just use hash values for comparisons. */ + case INTEGER_CST: + case REAL_CST: + case FIXED_CST: + case STRING_CST: + case COMPLEX_CST: + case VECTOR_CST: + { + hashval_t h1 = iterative_hash_expr (t1, 0); + hashval_t h2 = iterative_hash_expr (t2, 0); + if (h1 != h2) + return h1 < h2 ? -1 : 1; + break; + } + + case SSA_NAME: + cmp = data_ref_compare_tree (SSA_NAME_VAR (t1), SSA_NAME_VAR (t2)); + if (cmp != 0) + return cmp; + + if (SSA_NAME_VERSION (t1) != SSA_NAME_VERSION (t2)) + return SSA_NAME_VERSION (t1) < SSA_NAME_VERSION (t2) ? -1 : 1; + break; + + default: + tclass = TREE_CODE_CLASS (code); + + /* For var-decl, we could compare their UIDs. */ + if (tclass == tcc_declaration) + { + if (DECL_UID (t1) != DECL_UID (t2)) + return DECL_UID (t1) < DECL_UID (t2) ? -1 : 1; + break; + } + + /* For expressions with operands, compare their operands recursively. */ + for (i = TREE_OPERAND_LENGTH (t1) - 1; i >= 0; --i) + { + cmp = data_ref_compare_tree (TREE_OPERAND (t1, i), + TREE_OPERAND (t2, i)); + if (cmp != 0) + return cmp; + } + } + + return 0; +} + /* Check if OFFSET1 and OFFSET2 (DR_OFFSETs of some data-refs) are identical expressions. */ static bool diff --git a/gcc/tree-data-ref.h b/gcc/tree-data-ref.h index 3a54120..96bc764 100644 --- a/gcc/tree-data-ref.h +++ b/gcc/tree-data-ref.h @@ -342,6 +342,7 @@ extern bool dr_may_alias_p (const struct data_reference *, extern bool dr_equal_offsets_p (struct data_reference *, struct data_reference *); +extern int data_ref_compare_tree (tree, tree); /* Return true when the base objects of data references A and B are the same memory object. */ diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 67cc969..de04e27 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -2574,83 +2574,6 @@ vect_analyze_data_ref_access (struct data_reference *dr) return vect_analyze_group_access (dr); } - - -/* A helper function used in the comparator function to sort data - references. T1 and T2 are two data references to be compared. - The function returns -1, 0, or 1. */ - -static int -compare_tree (tree t1, tree t2) -{ - int i, cmp; - enum tree_code code; - char tclass; - - if (t1 == t2) - return 0; - if (t1 == NULL) - return -1; - if (t2 == NULL) - return 1; - - STRIP_NOPS (t1); - STRIP_NOPS (t2); - - if (TREE_CODE (t1) != TREE_CODE (t2)) - return TREE_CODE (t1) < TREE_CODE (t2) ? -1 : 1; - - code = TREE_CODE (t1); - switch (code) - { - /* For const values, we can just use hash values for comparisons. */ - case INTEGER_CST: - case REAL_CST: - case FIXED_CST: - case STRING_CST: - case COMPLEX_CST: - case VECTOR_CST: - { - hashval_t h1 = iterative_hash_expr (t1, 0); - hashval_t h2 = iterative_hash_expr (t2, 0); - if (h1 != h2) - return h1 < h2 ? -1 : 1; - break; - } - - case SSA_NAME: - cmp = compare_tree (SSA_NAME_VAR (t1), SSA_NAME_VAR (t2)); - if (cmp != 0) - return cmp; - - if (SSA_NAME_VERSION (t1) != SSA_NAME_VERSION (t2)) - return SSA_NAME_VERSION (t1) < SSA_NAME_VERSION (t2) ? -1 : 1; - break; - - default: - tclass = TREE_CODE_CLASS (code); - - /* For var-decl, we could compare their UIDs. */ - if (tclass == tcc_declaration) - { - if (DECL_UID (t1) != DECL_UID (t2)) - return DECL_UID (t1) < DECL_UID (t2) ? -1 : 1; - break; - } - - /* For expressions with operands, compare their operands recursively. */ - for (i = TREE_OPERAND_LENGTH (t1) - 1; i >= 0; --i) - { - cmp = compare_tree (TREE_OPERAND (t1, i), TREE_OPERAND (t2, i)); - if (cmp != 0) - return cmp; - } - } - - return 0; -} - - /* Compare two data-references DRA and DRB to group them into chunks suitable for grouping. */ @@ -2674,7 +2597,8 @@ dr_group_sort_cmp (const void *dra_, const void *drb_) /* Ordering of DRs according to base. */ if (!operand_equal_p (DR_BASE_ADDRESS (dra), DR_BASE_ADDRESS (drb), 0)) { - cmp = compare_tree (DR_BASE_ADDRESS (dra), DR_BASE_ADDRESS (drb)); + cmp = data_ref_compare_tree (DR_BASE_ADDRESS (dra), + DR_BASE_ADDRESS (drb)); if (cmp != 0) return cmp; } @@ -2682,7 +2606,7 @@ dr_group_sort_cmp (const void *dra_, const void *drb_) /* And according to DR_OFFSET. */ if (!dr_equal_offsets_p (dra, drb)) { - cmp = compare_tree (DR_OFFSET (dra), DR_OFFSET (drb)); + cmp = data_ref_compare_tree (DR_OFFSET (dra), DR_OFFSET (drb)); if (cmp != 0) return cmp; } @@ -2695,8 +2619,8 @@ dr_group_sort_cmp (const void *dra_, const void *drb_) if (!operand_equal_p (TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (dra))), TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (drb))), 0)) { - cmp = compare_tree (TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (dra))), - TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (drb)))); + cmp = data_ref_compare_tree (TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (dra))), + TYPE_SIZE_UNIT (TREE_TYPE (DR_REF (drb)))); if (cmp != 0) return cmp; } @@ -2704,7 +2628,7 @@ dr_group_sort_cmp (const void *dra_, const void *drb_) /* And after step. */ if (!operand_equal_p (DR_STEP (dra), DR_STEP (drb), 0)) { - cmp = compare_tree (DR_STEP (dra), DR_STEP (drb)); + cmp = data_ref_compare_tree (DR_STEP (dra), DR_STEP (drb)); if (cmp != 0) return cmp; } @@ -2904,9 +2828,9 @@ operator == (const dr_with_seg_len& d1, { return operand_equal_p (DR_BASE_ADDRESS (d1.dr), DR_BASE_ADDRESS (d2.dr), 0) - && compare_tree (DR_OFFSET (d1.dr), DR_OFFSET (d2.dr)) == 0 - && compare_tree (DR_INIT (d1.dr), DR_INIT (d2.dr)) == 0 - && compare_tree (d1.seg_len, d2.seg_len) == 0; + && data_ref_compare_tree (DR_OFFSET (d1.dr), DR_OFFSET (d2.dr)) == 0 + && data_ref_compare_tree (DR_INIT (d1.dr), DR_INIT (d2.dr)) == 0 + && data_ref_compare_tree (d1.seg_len, d2.seg_len) == 0; } /* Function comp_dr_with_seg_len_pair. @@ -2928,23 +2852,29 @@ comp_dr_with_seg_len_pair (const void *pa_, const void *pb_) and step, we don't care the order of those two pairs after sorting. */ int comp_res; - if ((comp_res = compare_tree (DR_BASE_ADDRESS (a1.dr), + if ((comp_res = data_ref_compare_tree (DR_BASE_ADDRESS (a1.dr), DR_BASE_ADDRESS (b1.dr))) != 0) return comp_res; - if ((comp_res = compare_tree (DR_BASE_ADDRESS (a2.dr), + if ((comp_res = data_ref_compare_tree (DR_BASE_ADDRESS (a2.dr), DR_BASE_ADDRESS (b2.dr))) != 0) return comp_res; - if ((comp_res = compare_tree (DR_STEP (a1.dr), DR_STEP (b1.dr))) != 0) + if ((comp_res = data_ref_compare_tree (DR_STEP (a1.dr), + DR_STEP (b1.dr))) != 0) return comp_res; - if ((comp_res = compare_tree (DR_STEP (a2.dr), DR_STEP (b2.dr))) != 0) + if ((comp_res = data_ref_compare_tree (DR_STEP (a2.dr), + DR_STEP (b2.dr))) != 0) return comp_res; - if ((comp_res = compare_tree (DR_OFFSET (a1.dr), DR_OFFSET (b1.dr))) != 0) + if ((comp_res = data_ref_compare_tree (DR_OFFSET (a1.dr), + DR_OFFSET (b1.dr))) != 0) return comp_res; - if ((comp_res = compare_tree (DR_INIT (a1.dr), DR_INIT (b1.dr))) != 0) + if ((comp_res = data_ref_compare_tree (DR_INIT (a1.dr), + DR_INIT (b1.dr))) != 0) return comp_res; - if ((comp_res = compare_tree (DR_OFFSET (a2.dr), DR_OFFSET (b2.dr))) != 0) + if ((comp_res = data_ref_compare_tree (DR_OFFSET (a2.dr), + DR_OFFSET (b2.dr))) != 0) return comp_res; - if ((comp_res = compare_tree (DR_INIT (a2.dr), DR_INIT (b2.dr))) != 0) + if ((comp_res = data_ref_compare_tree (DR_INIT (a2.dr), + DR_INIT (b2.dr))) != 0) return comp_res; return 0; @@ -3128,9 +3058,11 @@ vect_prune_runtime_alias_test_list (loop_vec_info loop_vinfo) segment_length_a = vect_vfa_segment_size (dr_a, length_factor); segment_length_b = vect_vfa_segment_size (dr_b, length_factor); - comp_res = compare_tree (DR_BASE_ADDRESS (dr_a), DR_BASE_ADDRESS (dr_b)); + comp_res = data_ref_compare_tree (DR_BASE_ADDRESS (dr_a), + DR_BASE_ADDRESS (dr_b)); if (comp_res == 0) - comp_res = compare_tree (DR_OFFSET (dr_a), DR_OFFSET (dr_b)); + comp_res = data_ref_compare_tree (DR_OFFSET (dr_a), + DR_OFFSET (dr_b)); /* Alias is known at compilation time. */ if (comp_res == 0 -- 1.9.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-05-26 14:12 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-05-23 16:23 [PATCH GCC][1/6]Move compare_tree to tree.c and expose the interface Bin Cheng 2017-05-26 11:15 ` Richard Biener 2017-05-26 11:31 ` Bin.Cheng 2017-05-26 11:51 ` Richard Biener 2017-05-26 14:12 ` Bin.Cheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).