My new warning triggered here and said "bitwise comparison always evaluates to true" and I believe it's right: GOVD_WRITTEN = 131072 which is 10...0000 in binary, so n->value & GOVD_WRITTEN can never be 1; I suppose 0 was meant to be used here instead. Too bad Jakub's away, so he can't confirm.
Bootstrapped/regtested on x86_64-linux and ppc64le-linux, ok for trunk? 2017-08-10 Marek Polacek <pola...@redhat.com> * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1. diff --git gcc/gimplify.c gcc/gimplify.c index 86623e09f5d..e52d7dcddaf 100644 --- gcc/gimplify.c +++ gcc/gimplify.c @@ -8915,7 +8915,7 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, gimple_seq body, tree *list_p, OMP_CLAUSE_SHARED_READONLY (c) = 1; else if (DECL_P (decl) && ((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_SHARED - && (n->value & GOVD_WRITTEN) != 1) + && (n->value & GOVD_WRITTEN) != 0) || (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR && !OMP_CLAUSE_LINEAR_NO_COPYOUT (c))) && omp_shared_to_firstprivate_optimizable_decl_p (decl)) Marek