This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Where is OMP_CLAUSE_CHECK defined?
- From: Amittai Aviram <amittai dot aviram at yale dot edu>
- To: gcc-help at gcc dot gnu dot org
- Date: Thu, 9 Feb 2012 20:53:54 -0500
- Subject: Where is OMP_CLAUSE_CHECK defined?
I am trying understand more about how GCC compiles OpenMP directives and clauses by studying gcc/gcc/omp-low.c . I've run across the macro OMP_CLAUSE_DECL, which is tree.h defines:
#define OMP_CLAUSE_DECL(NODE) \
OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \
OMP_CLAUSE_PRIVATE, \
OMP_CLAUSE_COPYPRIVATE), 0)
Now, for OMP_CLAUSE_OPERAND, tree.h has
#define OMP_CLAUSE_OPERAND(NODE, I) \
OMP_CLAUSE_ELT_CHECK (NODE, I)
And for OMP_CLAUSE_ELT_CHECK, it has
#define OMP_CLAUSE_ELT_CHECK(T, I) __extension__ \
(*({__typeof (T) const __t = (T); \
const int __i = (I); \
if (TREE_CODE (__t) != OMP_CLAUSE) \
tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
OMP_CLAUSE, 0); \
if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code]) \
omp_clause_operand_check_failed (__i, __t, __FILE__, __LINE__, \
__FUNCTION__); \
&__t->omp_clause.ops[__i]; }))
Similarly, tree.h defines OMP_CLAUSE_RANGE_CHECK:
#define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) __extension__ \
({ __typeof (T) const __t = (T); \
if (TREE_CODE (__t) != OMP_CLAUSE) \
tree_check_failed (__t, __FILE__, __LINE__, __FUNCTION__, \
OMP_CLAUSE, 0); \
if ((int) __t->omp_clause.code < (int) (CODE1) \
|| (int) __t->omp_clause.code > (int) (CODE2)) \
omp_clause_range_check_failed (__t, __FILE__, __LINE__, \
__FUNCTION__, (CODE1), (CODE2)); \
__t; })
But I cannot find any definition for OMP_CLAUSE_CHECK. Where does GCC define this macro? Thanks.
Amittai
Amittai Aviram
PhD Student in Computer Science
Yale University
646 483 2639
amittai.aviram@yale.edu
http://www.amittai.com