diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-11-02 10:02:21 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-11-02 10:02:21 +0100 |
commit | d0c464d27244ba47e66f3e1444354e423304bd12 (patch) | |
tree | bf2a4b0ab2cb56537d82c7caa73be8a0c0ed6173 /gcc/c/c-parser.c | |
parent | 628be4ef7078d5fcbd0096f7b11fb9a24e4da08a (diff) | |
download | gcc-d0c464d27244ba47e66f3e1444354e423304bd12.zip gcc-d0c464d27244ba47e66f3e1444354e423304bd12.tar.gz gcc-d0c464d27244ba47e66f3e1444354e423304bd12.tar.bz2 |
gimplify.h (omp_construct_selector_matches): Change return type to int, add a new SCORES argument.
* gimplify.h (omp_construct_selector_matches): Change return
type to int, add a new SCORES argument.
* gimplify.c (omp_construct_selector_matches): Likewise. If
SCORES is non-NULL, compute scores of each construct.
* omp-general.h (omp_get_context_selector): Declare.
* omp-general.c (omp_maybe_offloaded, omp_context_selector_matches):
Adjust omp_construct_selector_matches callers.
(omp_get_context_selector): New function, moved from c-family/c-omp.c.
(omp_context_compute_score): New function.
(omp_resolve_declare_variant): Compute scores and decide based on
that.
c-family/
* c-common.h (c_omp_get_context_selector): Remove.
* c-omp.c (c_omp_get_context_selector): Moved to omp-general.c
and renamed to omp_get_context_selector.
c/
* c-parser.c (c_finish_omp_declare_variant): Use
omp_get_context_selector instead of c_omp_get_context_selector.
cp/
* decl.c (omp_declare_variant_finalize_one): Use
omp_get_context_selector instead of c_omp_get_context_selector.
testsuite/
* c-c++-common/gomp/declare-variant-12.c: New test.
From-SVN: r277742
Diffstat (limited to 'gcc/c/c-parser.c')
-rw-r--r-- | gcc/c/c-parser.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 9589cc6..6a43419 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -19465,8 +19465,7 @@ c_finish_omp_declare_variant (c_parser *parser, tree fndecl, tree parms) error_at (token->location, "variant %qD is not a function", variant); variant = error_mark_node; } - else if (c_omp_get_context_selector (ctx, "construct", "simd") - == NULL_TREE + else if (omp_get_context_selector (ctx, "construct", "simd") == NULL_TREE && !comptypes (TREE_TYPE (fndecl), TREE_TYPE (variant))) { error_at (token->location, "variant %qD and base %qD have " @@ -19487,7 +19486,7 @@ c_finish_omp_declare_variant (c_parser *parser, tree fndecl, tree parms) if (variant != error_mark_node) { C_DECL_USED (variant) = 1; - tree construct = c_omp_get_context_selector (ctx, "construct", NULL); + tree construct = omp_get_context_selector (ctx, "construct", NULL); c_omp_mark_declare_variant (match_loc, variant, construct); if (omp_context_selector_matches (ctx)) { |