Mercurial > hg > CbC > CbC_gcc
diff gcc/gimple.def @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | f6334be47118 |
children | 84e7813d76e9 |
line wrap: on
line diff
--- a/gcc/gimple.def Sun Aug 21 07:07:55 2011 +0900 +++ b/gcc/gimple.def Fri Oct 27 22:46:09 2017 +0900 @@ -1,6 +1,6 @@ /* This file contains the definitions of the GIMPLE IR tuples used in GCC. - Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2007-2017 Free Software Foundation, Inc. Contributed by Aldy Hernandez <aldyh@redhat.com> This file is part of GCC. @@ -124,6 +124,14 @@ CHAIN is the optional static chain link for nested functions. */ DEFGSCODE(GIMPLE_CALL, "gimple_call", GSS_CALL) +/* GIMPLE_TRANSACTION <BODY, LABEL> represents __transaction_atomic and + __transaction_relaxed blocks. + BODY is the sequence of statements inside the transaction. + LABEL is a label for the statement immediately following the + transaction. This is before RETURN so that it has MEM_OPS, + so that it can clobber global memory. */ +DEFGSCODE(GIMPLE_TRANSACTION, "gimple_transaction", GSS_TRANSACTION) + /* GIMPLE_RETURN <RETVAL> represents return statements. RETVAL is the value to return or NULL. If a value is returned it @@ -151,6 +159,12 @@ be invoked if an exception propagates to this point. */ DEFGSCODE(GIMPLE_EH_MUST_NOT_THROW, "gimple_eh_must_not_throw", GSS_EH_MNT) +/* GIMPLE_EH_ELSE <N_BODY, E_BODY> must be the sole contents of + a GIMPLE_TRY_FINALLY node. For all normal exits from the try block, + N_BODY is run; for all exception exits from the try block, + E_BODY is run. */ +DEFGSCODE(GIMPLE_EH_ELSE, "gimple_eh_else", GSS_EH_ELSE) + /* GIMPLE_RESX resumes execution after an exception. */ DEFGSCODE(GIMPLE_RESX, "gimple_resx", GSS_EH_CTRL) @@ -207,7 +221,7 @@ DEFGSCODE(GIMPLE_OMP_ATOMIC_LOAD, "gimple_omp_atomic_load", GSS_OMP_ATOMIC_LOAD) DEFGSCODE(GIMPLE_OMP_ATOMIC_STORE, "gimple_omp_atomic_store", - GSS_OMP_ATOMIC_STORE) + GSS_OMP_ATOMIC_STORE_LAYOUT) /* GIMPLE_OMP_CONTINUE marks the location of the loop or sections iteration in partially lowered OpenMP code. */ @@ -229,6 +243,9 @@ for (INDEX = INITIAL; INDEX COND FINAL; INDEX {+=,-=} INCR) BODY + Likewise for: + #pragma acc loop [clause1 ... clauseN] + BODY is the loop body. CLAUSES is the list of clauses. @@ -255,16 +272,16 @@ INITIAL, FINAL and INCR are required to be loop invariant integer expressions that are evaluated without any synchronization. The evaluation order, frequency of evaluation and side-effects are - unspecified by the standard. */ + unspecified by the standards. */ DEFGSCODE(GIMPLE_OMP_FOR, "gimple_omp_for", GSS_OMP_FOR) /* GIMPLE_OMP_MASTER <BODY> represents #pragma omp master. BODY is the sequence of statements to execute in the master section. */ DEFGSCODE(GIMPLE_OMP_MASTER, "gimple_omp_master", GSS_OMP) -/* GIMPLE_OMP_ORDERED <BODY> represents #pragma omp ordered. - BODY is the sequence of statements to execute in the ordered section. */ -DEFGSCODE(GIMPLE_OMP_ORDERED, "gimple_omp_ordered", GSS_OMP) +/* GIMPLE_OMP_TASKGROUP <BODY> represents #pragma omp taskgroup. + BODY is the sequence of statements to execute in the taskgroup section. */ +DEFGSCODE(GIMPLE_OMP_TASKGROUP, "gimple_omp_taskgroup", GSS_OMP) /* GIMPLE_OMP_PARALLEL <BODY, CLAUSES, CHILD_FN, DATA_ARG> represents @@ -273,7 +290,7 @@ BODY is a the sequence of statements to be executed by all threads. - CLAUSES is a TREE_LIST node with all the clauses. + CLAUSES is an OMP_CLAUSE chain with all the clauses. CHILD_FN is set when outlining the body of the parallel region. All the statements in BODY are moved into this newly created @@ -282,7 +299,7 @@ DATA_ARG is a local variable in the parent function containing data to be shared with CHILD_FN. This is used to implement all the data sharing clauses. */ -DEFGSCODE(GIMPLE_OMP_PARALLEL, "gimple_omp_parallel", GSS_OMP_PARALLEL) +DEFGSCODE(GIMPLE_OMP_PARALLEL, "gimple_omp_parallel", GSS_OMP_PARALLEL_LAYOUT) /* GIMPLE_OMP_TASK <BODY, CLAUSES, CHILD_FN, DATA_ARG, COPY_FN, ARG_SIZE, ARG_ALIGN> represents @@ -292,7 +309,7 @@ BODY is a the sequence of statements to be executed by all threads. - CLAUSES is a TREE_LIST node with all the clauses. + CLAUSES is an OMP_CLAUSE chain with all the clauses. CHILD_FN is set when outlining the body of the explicit task region. All the statements in BODY are moved into this newly created @@ -311,7 +328,7 @@ DEFGSCODE(GIMPLE_OMP_TASK, "gimple_omp_task", GSS_OMP_TASK) /* OMP_RETURN marks the end of an OpenMP directive. */ -DEFGSCODE(GIMPLE_OMP_RETURN, "gimple_omp_return", GSS_BASE) +DEFGSCODE(GIMPLE_OMP_RETURN, "gimple_omp_return", GSS_OMP_ATOMIC_STORE_LAYOUT) /* OMP_SECTION <BODY> represents #pragma omp section. BODY is the sequence of statements in the section body. */ @@ -320,7 +337,7 @@ /* OMP_SECTIONS <BODY, CLAUSES, CONTROL> represents #pragma omp sections. BODY is the sequence of statements in the sections body. - CLAUSES is a TREE_LIST node holding the list of associated clauses. + CLAUSES is an OMP_CLAUSE chain holding the list of associated clauses. CONTROL is a VAR_DECL used for deciding which of the sections to execute. */ DEFGSCODE(GIMPLE_OMP_SECTIONS, "gimple_omp_sections", GSS_OMP_SECTIONS) @@ -332,8 +349,36 @@ /* GIMPLE_OMP_SINGLE <BODY, CLAUSES> represents #pragma omp single BODY is the sequence of statements inside the single section. - CLAUSES is a TREE_LIST node holding the associated clauses. */ -DEFGSCODE(GIMPLE_OMP_SINGLE, "gimple_omp_single", GSS_OMP_SINGLE) + CLAUSES is an OMP_CLAUSE chain holding the associated clauses. */ +DEFGSCODE(GIMPLE_OMP_SINGLE, "gimple_omp_single", GSS_OMP_SINGLE_LAYOUT) + +/* GIMPLE_OMP_TARGET <BODY, CLAUSES, CHILD_FN> represents + #pragma acc {kernels,parallel,data,enter data,exit data,update} + #pragma omp target {,data,update} + BODY is the sequence of statements inside the construct + (NULL for some variants). + CLAUSES is an OMP_CLAUSE chain holding the associated clauses. + CHILD_FN is set when outlining the body of the offloaded region. + All the statements in BODY are moved into this newly created + function when converting OMP constructs into low-GIMPLE. + DATA_ARG is a vec of 3 local variables in the parent function + containing data to be mapped to CHILD_FN. This is used to + implement the MAP clauses. */ +DEFGSCODE(GIMPLE_OMP_TARGET, "gimple_omp_target", GSS_OMP_PARALLEL_LAYOUT) + +/* GIMPLE_OMP_TEAMS <BODY, CLAUSES> represents #pragma omp teams + BODY is the sequence of statements inside the single section. + CLAUSES is an OMP_CLAUSE chain holding the associated clauses. */ +DEFGSCODE(GIMPLE_OMP_TEAMS, "gimple_omp_teams", GSS_OMP_SINGLE_LAYOUT) + +/* GIMPLE_OMP_ORDERED <BODY, CLAUSES> represents #pragma omp ordered. + BODY is the sequence of statements to execute in the ordered section. + CLAUSES is an OMP_CLAUSE chain holding the associated clauses. */ +DEFGSCODE(GIMPLE_OMP_ORDERED, "gimple_omp_ordered", GSS_OMP_SINGLE_LAYOUT) + +/* GIMPLE_OMP_GRID_BODY <BODY> represents a parallel loop lowered for execution + on a GPU. It is an artificial statement created by omp lowering. */ +DEFGSCODE(GIMPLE_OMP_GRID_BODY, "gimple_omp_gpukernel", GSS_OMP) /* GIMPLE_PREDICT <PREDICT, OUTCOME> specifies a hint for branch prediction.