Hi Ilmir! On Thu, 13 Mar 2014 13:34:54 +0400, Ilmir Usmanov wrote: > Committed as r208533. Yay! \o/ Three minor things: Please move the entries from gcc/ChangeLog.gomp to the more specific gcc/[...]/ChangeLog.gomp files. Generally, we need to locate and then put ChangeLog snippets into the most specific ChangeLog file (so, for example, gcc/testsuite/ChangeLog for gcc/testsuite/gfortran.dg/goacc/assumed.f95), and as this is on the gomp-4_0-branch, then use (or create, if not yet present) the ChangeLog.gomp file instead of plain ChangeLog. The following change seems the right thing to do -- but why doesn't the current code trigger a GCC ICE due to a failing subcode check? (At least I thought you had test cases exercising the respective OpenACC vector clauses?) Can you please check that? If it's just missing a test case, feel free to commit that together with my patch. commit ee65334ec81b092111e9b2b34a0ee3ceb933b643 Author: Thomas Schwinge Date: Thu Mar 13 12:26:47 2014 +0100 Fix OMP_CLAUSE_VECTOR_EXPR subcode check. gcc/ * tree.h (OMP_CLAUSE_VECTOR_EXPR): Check for OMP_CLAUSE_VECTOR instead of OMP_CLAUSE_VECTOR_LENGTH. diff --git gcc/tree.h gcc/tree.h index bd70680..5ef2a0a 100644 --- gcc/tree.h +++ gcc/tree.h @@ -1323,7 +1323,7 @@ extern void protected_set_expr_location (tree, location_t); OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_WAIT), 0) #define OMP_CLAUSE_VECTOR_EXPR(NODE) \ OMP_CLAUSE_OPERAND ( \ - OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_VECTOR_LENGTH), 0) + OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_VECTOR), 0) #define OMP_CLAUSE_WORKER_EXPR(NODE) \ OMP_CLAUSE_OPERAND ( \ OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_WORKER), 0) The following cleanup should be fine to check in, or is there a reason for using OMP_WAIT_EXPR instead of OMP_CLAUSE_WAIT_EXPR? commit 7d69bdf8471e512791d4b7e0121efde7725a0cb9 Author: Thomas Schwinge Date: Thu Mar 13 12:25:14 2014 +0100 Rename OMP_WAIT_EXPR to OMP_CLAUSE_WAIT_EXPR. gcc/ * tree.h (OMP_WAIT_EXPR): Rename to OMP_CLAUSE_WAIT_EXPR. Change all users. diff --git gcc/fortran/trans-openmp.c gcc/fortran/trans-openmp.c index a1abd66..29364f4 100644 --- gcc/fortran/trans-openmp.c +++ gcc/fortran/trans-openmp.c @@ -1191,7 +1191,7 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses, tree wait_var = gfc_convert_expr_to_tree (block, clauses->non_clause_wait_expr); c = build_omp_clause (where.lb->location, OMP_CLAUSE_WAIT); - OMP_WAIT_EXPR (c)= wait_var; + OMP_CLAUSE_WAIT_EXPR (c)= wait_var; omp_clauses = gfc_trans_add_clause (c, omp_clauses); } diff --git gcc/tree.h gcc/tree.h index fbac81b..bd70680 100644 --- gcc/tree.h +++ gcc/tree.h @@ -1318,7 +1318,7 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_CLAUSE_ASYNC_EXPR(NODE) \ OMP_CLAUSE_OPERAND ( \ OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_ASYNC), 0) -#define OMP_WAIT_EXPR(NODE) \ +#define OMP_CLAUSE_WAIT_EXPR(NODE) \ OMP_CLAUSE_OPERAND ( \ OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_WAIT), 0) #define OMP_CLAUSE_VECTOR_EXPR(NODE) \ Grüße, Thomas