From e06f9964af04d213dcde35ee63ecff12676ece44 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 29 Nov 2013 11:41:12 +0100 Subject: re PR lto/59326 (FAIL: gcc.dg/vect/vect-simd-clone-*.c) PR lto/59326 * omp-low.c (simd_clone_create): Return NULL if for definition !cgraph_function_with_gimple_body_p (old_node). Call cgraph_get_body before calling cgraph_function_versioning. (expand_simd_clones): Look for "omp declare simd" attribute first. Don't check targetm.simd_clone.compute_vecsize_and_simdlen here. Punt if node->global.inlined_to. (pass_omp_simd_clone::gate): Also enable if in_lto_p && !flag_wpa. Disable pass if targetm.simd_clone.compute_vecsize_and_simdlen is NULL. * lto-streamer-out.c (hash_tree): Handle OMP_CLAUSE. lto/ * lto.c (compare_tree_sccs_1): Handle OMP_CLAUSE. testsuite/ * gcc.dg/vect/vect-simd-clone-12.c: New test. * gcc.dg/vect/vect-simd-clone-12a.c: New test. * gcc.dg/vect/vect-simd-clone-10a.c: Remove extern keywords. Co-Authored-By: Richard Biener From-SVN: r205514 --- gcc/lto/ChangeLog | 6 ++++++ gcc/lto/lto.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) (limited to 'gcc/lto') diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 3ce3a32..6d6ebf6 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,4 +1,10 @@ 2013-11-29 Jakub Jelinek + Richard Biener + + PR lto/59326 + * lto.c (compare_tree_sccs_1): Handle OMP_CLAUSE. + +2013-11-29 Jakub Jelinek PR lto/59326 * lto.c (mentions_vars_p_omp_clause): New function. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 26084bf..1f46238 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1410,6 +1410,36 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map) TREE_STRING_LENGTH (t1)) != 0) return false; + if (code == OMP_CLAUSE) + { + compare_values (OMP_CLAUSE_CODE); + switch (OMP_CLAUSE_CODE (t1)) + { + case OMP_CLAUSE_DEFAULT: + compare_values (OMP_CLAUSE_DEFAULT_KIND); + break; + case OMP_CLAUSE_SCHEDULE: + compare_values (OMP_CLAUSE_SCHEDULE_KIND); + break; + case OMP_CLAUSE_DEPEND: + compare_values (OMP_CLAUSE_DEPEND_KIND); + break; + case OMP_CLAUSE_MAP: + compare_values (OMP_CLAUSE_MAP_KIND); + break; + case OMP_CLAUSE_PROC_BIND: + compare_values (OMP_CLAUSE_PROC_BIND_KIND); + break; + case OMP_CLAUSE_REDUCTION: + compare_values (OMP_CLAUSE_REDUCTION_CODE); + compare_values (OMP_CLAUSE_REDUCTION_GIMPLE_INIT); + compare_values (OMP_CLAUSE_REDUCTION_GIMPLE_MERGE); + break; + default: + break; + } + } + #undef compare_values @@ -1633,6 +1663,16 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map) } } + if (code == OMP_CLAUSE) + { + int i; + + for (i = 0; i < omp_clause_num_ops[OMP_CLAUSE_CODE (t1)]; i++) + compare_tree_edges (OMP_CLAUSE_OPERAND (t1, i), + OMP_CLAUSE_OPERAND (t2, i)); + compare_tree_edges (OMP_CLAUSE_CHAIN (t1), OMP_CLAUSE_CHAIN (t2)); + } + #undef compare_tree_edges return true; -- cgit v1.1