Mercurial > hg > CbC > CbC_gcc
diff gcc/c-family/c-omp.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/c-family/c-omp.c Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/c-family/c-omp.c Thu Oct 25 07:37:49 2018 +0900 @@ -1,7 +1,7 @@ /* This file contains routines to construct OpenACC and OpenMP constructs, called from parsing in the C and C++ front ends. - Copyright (C) 2005-2017 Free Software Foundation, Inc. + Copyright (C) 2005-2018 Free Software Foundation, Inc. Contributed by Richard Henderson <rth@redhat.com>, Diego Novillo <dnovillo@redhat.com>. @@ -536,10 +536,6 @@ bool fail = false; int i; - if ((code == CILK_SIMD || code == CILK_FOR) - && !c_check_cilk_loop (locus, TREE_VEC_ELT (declv, 0))) - fail = true; - gcc_assert (TREE_VEC_LENGTH (declv) == TREE_VEC_LENGTH (initv)); gcc_assert (TREE_VEC_LENGTH (declv) == TREE_VEC_LENGTH (condv)); gcc_assert (TREE_VEC_LENGTH (declv) == TREE_VEC_LENGTH (incrv)); @@ -671,8 +667,7 @@ { if (!INTEGRAL_TYPE_P (TREE_TYPE (decl))) { - if (code != CILK_SIMD && code != CILK_FOR) - cond_ok = false; + cond_ok = false; } else if (operand_equal_p (TREE_OPERAND (cond, 1), TYPE_MIN_VALUE (TREE_TYPE (decl)), @@ -684,7 +679,7 @@ 0)) TREE_SET_CODE (cond, TREE_CODE (cond) == NE_EXPR ? LT_EXPR : GE_EXPR); - else if (code != CILK_SIMD && code != CILK_FOR) + else cond_ok = false; } @@ -832,7 +827,9 @@ { int i; for (i = 0; i < TREE_VEC_LENGTH (d->declv); i++) - if (*tp == TREE_VEC_ELT (d->declv, i)) + if (*tp == TREE_VEC_ELT (d->declv, i) + || (TREE_CODE (TREE_VEC_ELT (d->declv, i)) == TREE_LIST + && *tp == TREE_PURPOSE (TREE_VEC_ELT (d->declv, i)))) { location_t loc = d->expr_loc; if (loc == UNKNOWN_LOCATION) @@ -899,7 +896,9 @@ expression then involves the subtraction and always refers to the original value. The C++ FE needs to warn on those earlier. */ - if (decl == TREE_VEC_ELT (declv, i)) + if (decl == TREE_VEC_ELT (declv, i) + || (TREE_CODE (TREE_VEC_ELT (declv, i)) == TREE_LIST + && decl == TREE_PURPOSE (TREE_VEC_ELT (declv, i)))) { data.expr_loc = EXPR_LOCATION (cond); data.kind = 1; @@ -1616,5 +1615,13 @@ if (TREE_READONLY (decl)) return OMP_CLAUSE_DEFAULT_SHARED; + /* Predetermine artificial variables holding integral values, those + are usually result of gimplify_one_sizepos or SAVE_EXPR + gimplification. */ + if (VAR_P (decl) + && DECL_ARTIFICIAL (decl) + && INTEGRAL_TYPE_P (TREE_TYPE (decl))) + return OMP_CLAUSE_DEFAULT_SHARED; + return OMP_CLAUSE_DEFAULT_UNSPECIFIED; }