From: Thomas Schwinge <thomas@codesourcery.com>
To: <gcc-patches@gcc.gnu.org>
Cc: James Norris <jnorris@codesourcery.com>,
Cesar Philippidis <cesar@codesourcery.com>
Subject: [gomp4] OpenACC cache directive maintenance (was: [PATCH 4/6] [GOMP4] OpenACC 1.0+ support in fortran front-end)
Date: Wed, 05 Nov 2014 16:36:00 -0000 [thread overview]
Message-ID: <87a945eh9d.fsf@kepler.schwinge.homeip.net> (raw)
In-Reply-To: <874n4tqink.fsf@schwinge.name>
[-- Attachment #1: Type: text/plain, Size: 17085 bytes --]
Hi!
On Fri, 24 Jan 2014 20:33:35 +0100, I wrote:
> On Thu, 23 Jan 2014 22:04:45 +0400, Ilmir Usmanov <i.usmanov@samsung.com> wrote:
> > Subject: [PATCH 4/6] OpenACC GENERIC nodes
> > --- a/gcc/tree-core.h
> > +++ b/gcc/tree-core.h
> > @@ -216,12 +216,18 @@ enum omp_clause_code {
> > + /* Internal structure to hold OpenACC cache directive's variable-list.
> > + #pragma acc cache (variable-_ist). */
> > + OACC_NO_CLAUSE_CACHE,
>
> Hmm, yeah, while *_NO_CLAUSE_* perhaps isn't the most beautiful approach,
> I think it's fine at least for now.
In r217146, I applied the following to gomp-4_0-branch:
commit e8e44b733808997d06c0cdf9bf5756ce03530f42
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed Nov 5 16:35:30 2014 +0000
OpenACC cache directive maintenance.
gcc/c/
* c-parser.c (c_parser_oacc_cache): Generate OACC_CACHE.
* c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE__CACHE_.
gcc/cp/
* parser.c (cp_parser_oacc_cache): Generate OACC_CACHE.
* semantics.c (finish_omp_clauses): Handle OMP_CLAUSE__CACHE_.
gcc/
* gimplify.c (gimplify_oacc_cache): New function.
(gimplify_expr): Use it for OACC_CACHE.
(gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses): Handle
OMP_CLAUSE__CACHE_.
gcc/c/
* c-parser.c (c_parser_omp_variable_list) <OMP_CLAUSE__CACHE_>:
Remove explicit mark_exp_read invocations.
gcc/cp/
* parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
Remove explicit mark_exp_read invocations.
gcc/
* tree-core.h (enum omp_clause_code): Move OMP_NO_CLAUSE_CACHE
next to, and handle it like a data clause. Rename it to
OMP_CLAUSE__CACHE_. Update all users.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@217146 138bc75d-0d04-0410-961f-82ee72b054a4
---
gcc/ChangeLog.gomp | 9 +++++++++
gcc/c/ChangeLog.gomp | 8 ++++++++
gcc/c/c-parser.c | 23 +++++++++++++++--------
gcc/c/c-typeck.c | 1 +
gcc/cp/ChangeLog.gomp | 6 ++++++
gcc/cp/parser.c | 24 +++++++++++++++---------
gcc/cp/semantics.c | 1 +
gcc/fortran/trans-openmp.c | 2 +-
gcc/gimplify.c | 25 ++++++++++++++++++++++---
gcc/omp-low.c | 4 ++--
gcc/tree-core.h | 8 ++++----
gcc/tree-pretty-print.c | 11 +++++++----
gcc/tree.c | 6 +++---
gcc/tree.def | 5 +++--
gcc/tree.h | 2 +-
15 files changed, 98 insertions(+), 37 deletions(-)
diff --git gcc/ChangeLog.gomp gcc/ChangeLog.gomp
index fc624c8..2c2b349 100644
--- gcc/ChangeLog.gomp
+++ gcc/ChangeLog.gomp
@@ -1,5 +1,14 @@
2014-11-05 Thomas Schwinge <thomas@codesourcery.com>
+ * gimplify.c (gimplify_oacc_cache): New function.
+ (gimplify_expr): Use it for OACC_CACHE.
+ (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses): Handle
+ OMP_CLAUSE__CACHE_.
+
+ * tree-core.h (enum omp_clause_code): Move OMP_NO_CLAUSE_CACHE
+ next to, and handle it like a data clause. Rename it to
+ OMP_CLAUSE__CACHE_. Update all users.
+
* invoke.texi: Update for OpenACC.
* sourcebuild.texi: Likewise.
diff --git gcc/c/ChangeLog.gomp gcc/c/ChangeLog.gomp
index 7acd7b3..70278b9 100644
--- gcc/c/ChangeLog.gomp
+++ gcc/c/ChangeLog.gomp
@@ -1,3 +1,11 @@
+2014-11-05 Thomas Schwinge <thomas@codesourcery.com>
+
+ * c-parser.c (c_parser_oacc_cache): Generate OACC_CACHE.
+ * c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE__CACHE_.
+
+ * c-parser.c (c_parser_omp_variable_list) <OMP_CLAUSE__CACHE_>:
+ Remove explicit mark_exp_read invocations.
+
2014-11-05 James Norris <jnorris@codesourcery.com>
* c-parser.c (c_parser_omp_variable_list): Handle
diff --git gcc/c/c-parser.c gcc/c/c-parser.c
index 410b19f..40d4314 100644
--- gcc/c/c-parser.c
+++ gcc/c/c-parser.c
@@ -10053,7 +10053,7 @@ c_parser_omp_variable_list (c_parser *parser,
{
switch (kind)
{
- case OMP_NO_CLAUSE_CACHE:
+ case OMP_CLAUSE__CACHE_:
if (c_parser_peek_token (parser)->type != CPP_OPEN_SQUARE)
{
c_parser_error (parser, "expected %<[%>");
@@ -10100,11 +10100,8 @@ c_parser_omp_variable_list (c_parser *parser,
break;
}
- if (kind == OMP_NO_CLAUSE_CACHE)
+ if (kind == OMP_CLAUSE__CACHE_)
{
- mark_exp_read (low_bound);
- mark_exp_read (length);
-
if (TREE_CODE (low_bound) != INTEGER_CST
&& !TREE_READONLY (low_bound))
{
@@ -11901,12 +11898,22 @@ c_parser_omp_structured_block (c_parser *parser)
*/
static tree
-c_parser_oacc_cache (location_t loc __attribute__((unused)), c_parser *parser)
+c_parser_oacc_cache (location_t loc, c_parser *parser)
{
- c_parser_omp_var_list_parens (parser, OMP_NO_CLAUSE_CACHE, NULL);
+ tree stmt, clauses;
+
+ clauses = c_parser_omp_var_list_parens (parser, OMP_CLAUSE__CACHE_, NULL);
+ clauses = c_finish_omp_clauses (clauses);
+
c_parser_skip_to_pragma_eol (parser);
- return NULL_TREE;
+ stmt = make_node (OACC_CACHE);
+ TREE_TYPE (stmt) = void_type_node;
+ OACC_CACHE_CLAUSES (stmt) = clauses;
+ SET_EXPR_LOCATION (stmt, loc);
+ add_stmt (stmt);
+
+ return stmt;
}
/* OpenACC 2.0:
diff --git gcc/c/c-typeck.c gcc/c/c-typeck.c
index 76503e4..e315690d 100644
--- gcc/c/c-typeck.c
+++ gcc/c/c-typeck.c
@@ -12204,6 +12204,7 @@ c_finish_omp_clauses (tree clauses)
case OMP_CLAUSE_MAP:
case OMP_CLAUSE_TO:
case OMP_CLAUSE_FROM:
+ case OMP_CLAUSE__CACHE_:
t = OMP_CLAUSE_DECL (c);
if (TREE_CODE (t) == TREE_LIST)
{
diff --git gcc/cp/ChangeLog.gomp gcc/cp/ChangeLog.gomp
index 024e6a5..46d4912 100644
--- gcc/cp/ChangeLog.gomp
+++ gcc/cp/ChangeLog.gomp
@@ -1,5 +1,11 @@
2014-11-05 Thomas Schwinge <thomas@codesourcery.com>
+ * parser.c (cp_parser_oacc_cache): Generate OACC_CACHE.
+ * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE__CACHE_.
+
+ * parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
+ Remove explicit mark_exp_read invocations.
+
* parser.c (cp_parser_omp_clause_name): Also look for "pcopy",
"pcopyin", "pcopyout", "pcreate". Look for "wait" instead of
"WAIT".
diff --git gcc/cp/parser.c gcc/cp/parser.c
index 3ef2de7..ea4ad2f 100644
--- gcc/cp/parser.c
+++ gcc/cp/parser.c
@@ -27669,7 +27669,7 @@ cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind,
{
switch (kind)
{
- case OMP_NO_CLAUSE_CACHE:
+ case OMP_CLAUSE__CACHE_:
if (cp_lexer_peek_token (parser->lexer)->type != CPP_OPEN_SQUARE)
{
error_at (token->location, "expected %<[%>");
@@ -27708,11 +27708,8 @@ cp_parser_omp_var_list_no_open (cp_parser *parser, enum omp_clause_code kind,
RT_CLOSE_SQUARE))
goto skip_comma;
- if (kind == OMP_NO_CLAUSE_CACHE)
+ if (kind == OMP_CLAUSE__CACHE_)
{
- mark_exp_read (low_bound);
- mark_exp_read (length);
-
if (TREE_CODE (low_bound) != INTEGER_CST
&& !TREE_READONLY (low_bound))
{
@@ -31410,13 +31407,22 @@ cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok,
*/
static tree
-cp_parser_oacc_cache (cp_parser *parser,
- cp_token *pragma_tok __attribute__((unused)))
+cp_parser_oacc_cache (cp_parser *parser, cp_token *pragma_tok)
{
- cp_parser_omp_var_list (parser, OMP_NO_CLAUSE_CACHE, NULL_TREE);
+ tree stmt, clauses;
+
+ clauses = cp_parser_omp_var_list (parser, OMP_CLAUSE__CACHE_, NULL_TREE);
+ clauses = finish_omp_clauses (clauses);
+
cp_parser_require_pragma_eol (parser, cp_lexer_peek_token (parser->lexer));
- return NULL_TREE;
+ stmt = make_node (OACC_CACHE);
+ TREE_TYPE (stmt) = void_type_node;
+ OACC_CACHE_CLAUSES (stmt) = clauses;
+ SET_EXPR_LOCATION (stmt, pragma_tok->location);
+ add_stmt (stmt);
+
+ return stmt;
}
/* OpenACC 2.0:
diff --git gcc/cp/semantics.c gcc/cp/semantics.c
index 2457a6f..6e35eef 100644
--- gcc/cp/semantics.c
+++ gcc/cp/semantics.c
@@ -5704,6 +5704,7 @@ finish_omp_clauses (tree clauses)
case OMP_CLAUSE_MAP:
case OMP_CLAUSE_TO:
case OMP_CLAUSE_FROM:
+ case OMP_CLAUSE__CACHE_:
t = OMP_CLAUSE_DECL (c);
if (TREE_CODE (t) == TREE_LIST)
{
diff --git gcc/fortran/trans-openmp.c gcc/fortran/trans-openmp.c
index 97613ae..7dd4498 100644
--- gcc/fortran/trans-openmp.c
+++ gcc/fortran/trans-openmp.c
@@ -1807,7 +1807,7 @@ gfc_trans_omp_clauses (stmtblock_t *block, gfc_omp_clauses *clauses,
clause_code = OMP_CLAUSE_DEVICE_RESIDENT;
goto add_clause;
case OMP_LIST_CACHE:
- clause_code = OMP_NO_CLAUSE_CACHE;
+ clause_code = OMP_CLAUSE__CACHE_;
goto add_clause;
add_clause:
diff --git gcc/gimplify.c gcc/gimplify.c
index bfd7f66..d58876f 100644
--- gcc/gimplify.c
+++ gcc/gimplify.c
@@ -6114,6 +6114,7 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
case OMP_CLAUSE_TO:
case OMP_CLAUSE_FROM:
+ case OMP_CLAUSE__CACHE_:
decl = OMP_CLAUSE_DECL (c);
if (error_operand_p (decl))
{
@@ -6294,7 +6295,6 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
case OMP_CLAUSE_GANG:
case OMP_CLAUSE_ASYNC:
case OMP_CLAUSE_WAIT:
- case OMP_NO_CLAUSE_CACHE:
case OMP_CLAUSE_INDEPENDENT:
case OMP_CLAUSE_WORKER:
case OMP_CLAUSE_VECTOR:
@@ -6641,6 +6641,7 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, tree *list_p)
case OMP_CLAUSE_TO:
case OMP_CLAUSE_FROM:
+ case OMP_CLAUSE__CACHE_:
decl = OMP_CLAUSE_DECL (c);
if (!DECL_P (decl))
break;
@@ -6698,7 +6699,6 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, tree *list_p)
case OMP_CLAUSE_GANG:
case OMP_CLAUSE_ASYNC:
case OMP_CLAUSE_WAIT:
- case OMP_NO_CLAUSE_CACHE:
case OMP_CLAUSE_INDEPENDENT:
case OMP_CLAUSE_WORKER:
case OMP_CLAUSE_VECTOR:
@@ -6722,6 +6722,21 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, tree *list_p)
delete_omp_context (ctx);
}
+/* Gimplify OACC_CACHE. */
+
+static void
+gimplify_oacc_cache (tree *expr_p, gimple_seq *pre_p)
+{
+ tree expr = *expr_p;
+
+ gimplify_scan_omp_clauses (&OACC_CACHE_CLAUSES (expr), pre_p, ORT_WORKSHARE);
+ gimplify_adjust_omp_clauses (pre_p, &OACC_CACHE_CLAUSES (expr));
+
+ /* TODO: Do something sensible with this information. */
+
+ *expr_p = NULL_TREE;
+}
+
/* Gimplify the contents of an OMP_PARALLEL statement. This involves
gimplification of the body, as well as scanning the body for used
variables. We need to do this scan now, because variable-sized
@@ -8312,7 +8327,6 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
case OACC_HOST_DATA:
case OACC_DECLARE:
- case OACC_CACHE:
sorry ("directive not yet implemented");
ret = GS_ALL_DONE;
break;
@@ -8352,6 +8366,11 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p,
ret = GS_ALL_DONE;
break;
+ case OACC_CACHE:
+ gimplify_oacc_cache (expr_p, pre_p);
+ ret = GS_ALL_DONE;
+ break;
+
case OACC_DATA:
case OMP_SECTIONS:
case OMP_SINGLE:
diff --git gcc/omp-low.c gcc/omp-low.c
index 49cf1ab..1c9d942 100644
--- gcc/omp-low.c
+++ gcc/omp-low.c
@@ -1982,7 +1982,7 @@ scan_sharing_clauses (tree clauses, omp_context *ctx)
case OMP_CLAUSE_DEVICE_RESIDENT:
case OMP_CLAUSE_USE_DEVICE:
case OMP_CLAUSE_GANG:
- case OMP_NO_CLAUSE_CACHE:
+ case OMP_CLAUSE__CACHE_:
case OMP_CLAUSE_INDEPENDENT:
case OMP_CLAUSE_WORKER:
case OMP_CLAUSE_VECTOR:
@@ -2130,7 +2130,7 @@ scan_sharing_clauses (tree clauses, omp_context *ctx)
case OMP_CLAUSE_DEVICE_RESIDENT:
case OMP_CLAUSE_USE_DEVICE:
case OMP_CLAUSE_GANG:
- case OMP_NO_CLAUSE_CACHE:
+ case OMP_CLAUSE__CACHE_:
case OMP_CLAUSE_INDEPENDENT:
case OMP_CLAUSE_WORKER:
case OMP_CLAUSE_VECTOR:
diff --git gcc/tree-core.h gcc/tree-core.h
index abdc2c9..42ad6a0 100644
--- gcc/tree-core.h
+++ gcc/tree-core.h
@@ -266,6 +266,10 @@ enum omp_clause_code {
OpenMP clause: map ({alloc:,to:,from:,tofrom:,}variable-list). */
OMP_CLAUSE_MAP,
+ /* Internal structure to hold OpenACC cache directive's variable-list.
+ #pragma acc cache (variable-list). */
+ OMP_CLAUSE__CACHE_,
+
/* OpenACC clause: host (variable_list). */
OMP_CLAUSE_HOST,
@@ -292,10 +296,6 @@ enum omp_clause_code {
/* OpenACC clause/directive: wait [(integer-expression-list)]. */
OMP_CLAUSE_WAIT,
- /* Internal structure to hold OpenACC cache directive's variable-list.
- #pragma acc cache (variable-list). */
- OMP_NO_CLAUSE_CACHE,
-
/* Internal clause: temporary for combined loops expansion. */
OMP_CLAUSE__LOOPTEMP_,
diff --git gcc/tree-pretty-print.c gcc/tree-pretty-print.c
index f311ed9..d678f36 100644
--- gcc/tree-pretty-print.c
+++ gcc/tree-pretty-print.c
@@ -347,9 +347,6 @@ dump_omp_clause (pretty_printer *buffer, tree clause, int spc, int flags)
case OMP_CLAUSE_USE_DEVICE:
name = "use_device";
goto print_remap;
- case OMP_NO_CLAUSE_CACHE:
- name = "_cache_";
- goto print_remap;
print_remap:
pp_string (buffer, name);
pp_left_paren (buffer);
@@ -599,6 +596,12 @@ dump_omp_clause (pretty_printer *buffer, tree clause, int spc, int flags)
spc, flags, false);
goto print_clause_size;
+ case OMP_CLAUSE__CACHE_:
+ pp_string (buffer, "(");
+ dump_generic_node (buffer, OMP_CLAUSE_DECL (clause),
+ spc, flags, false);
+ goto print_clause_size;
+
case OMP_CLAUSE_NUM_TEAMS:
pp_string (buffer, "num_teams(");
dump_generic_node (buffer, OMP_CLAUSE_NUM_TEAMS_EXPR (clause),
@@ -2548,7 +2551,7 @@ dump_generic_node (pretty_printer *buffer, tree node, int spc, int flags,
case OACC_CACHE:
pp_string (buffer, "#pragma acc cache");
- dump_omp_clauses (buffer, OACC_CACHE_CLAUSES(node), spc, flags);
+ dump_omp_clauses (buffer, OACC_CACHE_CLAUSES (node), spc, flags);
break;
case OMP_PARALLEL:
diff --git gcc/tree.c gcc/tree.c
index 0475622..f39c63f 100644
--- gcc/tree.c
+++ gcc/tree.c
@@ -270,6 +270,7 @@ unsigned const char omp_clause_num_ops[] =
2, /* OMP_CLAUSE_FROM */
2, /* OMP_CLAUSE_TO */
2, /* OMP_CLAUSE_MAP */
+ 2, /* OMP_CLAUSE__CACHE_ */
1, /* OMP_CLAUSE_HOST */
1, /* OMP_CLAUSE_OACC_DEVICE */
1, /* OMP_CLAUSE_DEVICE_RESIDENT */
@@ -277,7 +278,6 @@ unsigned const char omp_clause_num_ops[] =
1, /* OMP_CLAUSE_GANG */
1, /* OMP_CLAUSE_ASYNC */
1, /* OMP_CLAUSE_WAIT */
- 1, /* OMP_NO_CLAUSE_CACHE */
1, /* OMP_CLAUSE__LOOPTEMP_ */
1, /* OMP_CLAUSE_IF */
1, /* OMP_CLAUSE_NUM_THREADS */
@@ -329,6 +329,7 @@ const char * const omp_clause_code_name[] =
"from",
"to",
"map",
+ "_cache_",
"host",
"device",
"device_resident",
@@ -336,7 +337,6 @@ const char * const omp_clause_code_name[] =
"gang",
"async",
"wait",
- "_cache_",
"_looptemp_",
"if",
"num_threads",
@@ -11127,7 +11127,6 @@ walk_tree_1 (tree *tp, walk_tree_fn func, void *data,
case OMP_CLAUSE_GANG:
case OMP_CLAUSE_ASYNC:
case OMP_CLAUSE_WAIT:
- case OMP_NO_CLAUSE_CACHE:
case OMP_CLAUSE_WORKER:
case OMP_CLAUSE_VECTOR:
case OMP_CLAUSE_NUM_GANGS:
@@ -11194,6 +11193,7 @@ walk_tree_1 (tree *tp, walk_tree_fn func, void *data,
case OMP_CLAUSE_FROM:
case OMP_CLAUSE_TO:
case OMP_CLAUSE_MAP:
+ case OMP_CLAUSE__CACHE_:
WALK_SUBTREE (OMP_CLAUSE_DECL (*tp));
WALK_SUBTREE (OMP_CLAUSE_OPERAND (*tp, 1));
WALK_SUBTREE_TAIL (OMP_CLAUSE_CHAIN (*tp));
diff --git gcc/tree.def gcc/tree.def
index 871a7fb..f44853a 100644
--- gcc/tree.def
+++ gcc/tree.def
@@ -1163,8 +1163,9 @@ DEFTREECODE (OACC_ENTER_DATA, "oacc_enter_data", tcc_statement, 1)
Operand 0: OACC_EXIT_DATA_CLAUSES: List of clauses. */
DEFTREECODE (OACC_EXIT_DATA, "oacc_exit_data", tcc_statement, 1)
-/* OpenACC - #pragma acc cache [clause1 ... clauseN]
- Operand 0: OACC_CACHE_CLAUSES: List of clauses. */
+/* OpenACC - #pragma acc cache (variable1 ... variableN)
+ Operand 0: OACC_CACHE_CLAUSES: List of variables (transformed into
+ OMP_CLAUSE__CACHE_ clauses). */
DEFTREECODE (OACC_CACHE, "oacc_cache", tcc_statement, 1)
/* OpenMP - #pragma omp target update [clause1 ... clauseN]
diff --git gcc/tree.h gcc/tree.h
index c91e716..e1adbab 100644
--- gcc/tree.h
+++ gcc/tree.h
@@ -1254,7 +1254,7 @@ extern void protected_set_expr_location (tree, location_t);
#define OMP_CLAUSE_SIZE(NODE) \
OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \
OMP_CLAUSE_FROM, \
- OMP_CLAUSE_MAP), 1)
+ OMP_CLAUSE__CACHE_), 1)
#define OMP_CLAUSE_CHAIN(NODE) TREE_CHAIN (OMP_CLAUSE_CHECK (NODE))
#define OMP_CLAUSE_DECL(NODE) \
Grüße,
Thomas
[-- Attachment #2: Type: application/pgp-signature, Size: 472 bytes --]
next prev parent reply other threads:[~2014-11-05 16:36 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-23 18:01 [PATCH] [GOMP4] OpenACC 1.0+ support in fortran front-end Ilmir Usmanov
2014-01-23 18:03 ` [PATCH 1/6] " Ilmir Usmanov
2014-01-23 18:03 ` [PATCH 2/6] " Ilmir Usmanov
2014-01-23 18:04 ` [PATCH 3/6] " Ilmir Usmanov
2014-01-23 18:05 ` [PATCH 4/6] " Ilmir Usmanov
2014-01-23 18:05 ` [PATCH 5/6] " Ilmir Usmanov
2014-01-23 18:06 ` [PATCH 6/6] " Ilmir Usmanov
2014-01-23 18:09 ` [PATCH 7/6] " Ilmir Usmanov
2014-01-24 19:33 ` [PATCH 4/6] " Thomas Schwinge
2014-11-05 16:29 ` [gomp4] OpenACC cache directive for C Thomas Schwinge
2014-11-05 16:36 ` Thomas Schwinge [this message]
2014-11-05 16:45 ` [gomp4] OpenACC cache directive maintenance Thomas Schwinge
2015-10-27 15:26 ` [PR fortran/63865] OpenACC cache directive: match Fortran support with C/C++ (was: [gomp4] OpenACC cache directive maintenance) Thomas Schwinge
2015-10-27 15:30 ` Jakub Jelinek
2015-10-27 17:03 ` [PR fortran/63865] OpenACC cache directive: match Fortran support with C/C++ Thomas Schwinge
2014-11-05 16:49 ` [gomp4] Testing of C/C++ OpenACC cache directive (was: OpenACC cache directive for C) Thomas Schwinge
2016-06-02 11:47 ` [PR c/71381] C/C++ OpenACC cache directive rejects valid syntax (was: [gomp4] OpenACC cache directive for C.) Thomas Schwinge
2016-06-08 13:29 ` [PING] [PR c/71381] C/C++ OpenACC cache directive rejects valid syntax Thomas Schwinge
2016-06-08 14:07 ` Jakub Jelinek
2016-06-10 10:32 ` Thomas Schwinge
2016-06-10 13:14 ` Thomas Schwinge
2016-06-10 20:40 ` Gerald Pfeifer
2014-01-24 20:47 ` [PATCH 2/6] [GOMP4] OpenACC 1.0+ support in fortran front-end Thomas Schwinge
2014-01-24 20:31 ` [PATCH 1/6] " Thomas Schwinge
2014-01-27 19:37 ` Tobias Burnus
2014-01-24 18:04 ` [PATCH] " Thomas Schwinge
2014-01-27 13:12 ` Ilmir Usmanov
2014-01-27 15:49 ` Thomas Schwinge
2014-01-27 16:35 ` Ilmir Usmanov
2014-01-31 11:14 ` Ilmir Usmanov
2014-01-31 11:16 ` [PATCH 1/6] " Ilmir Usmanov
2014-01-31 11:17 ` [PATCH 2/6] " Ilmir Usmanov
2014-01-31 11:18 ` [PATCH 3/6] " Ilmir Usmanov
2014-01-31 11:22 ` [PATCH 4/6] " Ilmir Usmanov
2014-01-31 11:34 ` [PATCH 5/6] " Ilmir Usmanov
2014-01-31 11:45 ` [PATCH 6/6] " Ilmir Usmanov
2014-02-09 23:43 ` [PATCH 5/6] " Tobias Burnus
2014-02-10 8:52 ` Thomas Schwinge
2014-02-10 9:34 ` Ilmir Usmanov
2014-02-10 23:13 ` Tobias Burnus
2014-02-10 9:45 ` Ilmir Usmanov
2014-02-10 10:52 ` Thomas Schwinge
2014-02-11 16:51 ` [PATCH 4/6] " Thomas Schwinge
2014-02-13 13:15 ` Ilmir Usmanov
2014-02-13 14:57 ` Thomas Schwinge
2014-02-14 5:45 ` Ilmir Usmanov
2014-02-21 19:29 ` [GOMP4] gimple_code_is_oacc -> is_gimple_omp_oacc_specifically (was: [PATCH 4/6] [GOMP4] OpenACC 1.0+ support in fortran front-end) Thomas Schwinge
2014-02-09 23:24 ` [PATCH 3/6] [GOMP4] OpenACC 1.0+ support in fortran front-end Tobias Burnus
2014-02-09 23:10 ` [PATCH 2/6] " Tobias Burnus
2014-02-10 9:10 ` Thomas Schwinge
2014-02-19 16:43 ` Ilmir Usmanov
2014-01-31 12:00 ` [PATCH 1/6] " Jakub Jelinek
2014-01-31 12:33 ` Ilmir Usmanov
2014-02-03 15:21 ` [PING] " Ilmir Usmanov
2014-02-09 22:22 ` Tobias Burnus
2014-02-19 15:34 ` Ilmir Usmanov
2014-02-19 23:52 ` Tobias Burnus
2014-02-20 8:19 ` Ilmir Usmanov
2014-03-04 7:56 ` [PATCH 1/4] [GOMP4] [Fortran] " Ilmir Usmanov
2014-03-04 7:57 ` Ilmir Usmanov
2014-03-04 7:57 ` [PATCH 2/4] " Ilmir Usmanov
2014-03-04 7:58 ` [PATCH 3/4] " Ilmir Usmanov
2014-03-04 7:59 ` [PATCH 4/4] " Ilmir Usmanov
2014-03-04 22:56 ` Tobias Burnus
2014-03-04 22:52 ` [PATCH 3/4] " Tobias Burnus
2014-03-04 17:20 ` [PATCH 1/4] " Tobias Burnus
2014-03-07 10:44 ` Ilmir Usmanov
2014-03-07 10:45 ` Ilmir Usmanov
2014-03-07 10:46 ` [PATCH 2/4] " Ilmir Usmanov
2014-03-07 10:46 ` [PATCH 3/4] " Ilmir Usmanov
2014-03-07 10:47 ` [PATCH 4/4] " Ilmir Usmanov
2014-03-08 17:55 ` Tobias Burnus
2014-03-20 10:53 ` Thomas Schwinge
2014-03-20 12:48 ` Ilmir Usmanov
2014-03-20 14:43 ` Jakub Jelinek
2014-03-08 17:19 ` [PATCH 3/4] " Tobias Burnus
2014-03-08 19:55 ` [PATCH 2/4] " Tobias Burnus
2014-03-11 12:04 ` Ilmir Usmanov
2014-03-12 18:46 ` Tobias Burnus
2014-03-12 18:27 ` [PATCH 1/4] " Tobias Burnus
2014-03-13 9:41 ` Ilmir Usmanov
2014-03-13 11:43 ` Thomas Schwinge
2014-03-13 13:24 ` Ilmir Usmanov
2014-03-13 14:13 ` Ilmir Usmanov
2014-03-16 19:46 ` Tobias Burnus
2014-03-16 20:44 ` Thomas Schwinge
2014-04-05 10:40 ` Thomas Schwinge
2014-03-10 15:44 ` Thomas Schwinge
2014-03-04 17:42 ` Tobias Burnus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a945eh9d.fsf@kepler.schwinge.homeip.net \
--to=thomas@codesourcery.com \
--cc=cesar@codesourcery.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jnorris@codesourcery.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).