aboutsummaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-03-07 20:07:44 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-03-07 20:07:44 +0100
commita71dbc63406e497eb2c1ce395bc90c8facfde89b (patch)
treed23939dc7336bec25e04515d44781445d6f46721 /gcc/c
parentd8a90142db624db1f1db43de334e98d02a4dcfd2 (diff)
downloadgcc-a71dbc63406e497eb2c1ce395bc90c8facfde89b.zip
gcc-a71dbc63406e497eb2c1ce395bc90c8facfde89b.tar.gz
gcc-a71dbc63406e497eb2c1ce395bc90c8facfde89b.tar.bz2
re PR c/79834 (c/c-parser.c: make code more i18n-friendly)
PR c/79834 c/ * c-parser.c (c_parser_pragma): Use error_at instead of c_parser_error for "may only be used in compound statements" diagnostics, change it such that the same translatable string is used for all pragmas. For PRAGMA_OACC_WAIT use "acc wait" rather than "acc enter data" in the diagnostics. (c_parser_omp_cancellation_point, c_parser_omp_target_update, c_parser_omp_target_enter_data, c_parser_omp_target_exit_data): Change "may only be used in compound statements" diagnostics, such that the same translatable string is used for all pragmas. cp/ * parser.c (cp_parser_omp_cancellation_point, cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data, cp_parser_omp_target_update): Change "may only be used in compound statements" diagnostics, such that the same translatable string is used for all pragmas. (cp_parser_pragma): Likewise. Use error_at instead of cp_parser_error for that diagnostics. testsuite/ * c-c++-common/goacc/pragma_context.c (f2): Adjust expected diagnostics. From-SVN: r245959
Diffstat (limited to 'gcc/c')
-rw-r--r--gcc/c/ChangeLog13
-rw-r--r--gcc/c/c-parser.c80
2 files changed, 48 insertions, 45 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index e639e6b..588fe73 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,16 @@
+2017-03-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/79834
+ * c-parser.c (c_parser_pragma): Use error_at instead of c_parser_error
+ for "may only be used in compound statements" diagnostics, change it
+ such that the same translatable string is used for all pragmas. For
+ PRAGMA_OACC_WAIT use "acc wait" rather than "acc enter data" in the
+ diagnostics.
+ (c_parser_omp_cancellation_point, c_parser_omp_target_update,
+ c_parser_omp_target_enter_data, c_parser_omp_target_exit_data): Change
+ "may only be used in compound statements" diagnostics, such that the
+ same translatable string is used for all pragmas.
+
2017-03-04 Marek Polacek <polacek@redhat.com>
PR c/79847
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index fa4e950..8330e65 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -10157,6 +10157,7 @@ static bool
c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
{
unsigned int id;
+ const char *construct = NULL;
id = c_parser_peek_token (parser)->pragma_kind;
gcc_assert (id != PRAGMA_NONE);
@@ -10170,9 +10171,16 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OACC_ENTER_DATA:
if (context != pragma_compound)
{
+ construct = "acc enter data";
+ in_compound:
if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma acc enter data%> may only be "
- "used in compound statements");
+ {
+ error_at (c_parser_peek_token (parser)->location,
+ "%<#pragma %s%> may only be used in compound "
+ "statements", construct);
+ c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL);
+ return false;
+ }
goto bad_stmt;
}
c_parser_oacc_enter_exit_data (parser, true);
@@ -10181,10 +10189,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OACC_EXIT_DATA:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma acc exit data%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "acc exit data";
+ goto in_compound;
}
c_parser_oacc_enter_exit_data (parser, false);
return false;
@@ -10203,10 +10209,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OACC_UPDATE:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma acc update%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "acc update";
+ goto in_compound;
}
c_parser_oacc_update (parser);
return false;
@@ -10214,10 +10218,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OMP_BARRIER:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma omp barrier%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "omp barrier";
+ goto in_compound;
}
c_parser_omp_barrier (parser);
return false;
@@ -10225,10 +10227,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OMP_FLUSH:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma omp flush%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "omp flush";
+ goto in_compound;
}
c_parser_omp_flush (parser);
return false;
@@ -10236,10 +10236,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OMP_TASKWAIT:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma omp taskwait%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "omp taskwait";
+ goto in_compound;
}
c_parser_omp_taskwait (parser);
return false;
@@ -10247,10 +10245,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OMP_TASKYIELD:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma omp taskyield%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "omp taskyield";
+ goto in_compound;
}
c_parser_omp_taskyield (parser);
return false;
@@ -10258,10 +10254,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OMP_CANCEL:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma omp cancel%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "omp cancel";
+ goto in_compound;
}
c_parser_omp_cancel (parser);
return false;
@@ -10345,10 +10339,8 @@ c_parser_pragma (c_parser *parser, enum pragma_context context, bool *if_p)
case PRAGMA_OACC_WAIT:
if (context != pragma_compound)
{
- if (context == pragma_stmt)
- c_parser_error (parser, "%<#pragma acc enter data%> may only be "
- "used in compound statements");
- goto bad_stmt;
+ construct = "acc wait";
+ goto in_compound;
}
/* FALL THROUGH. */
@@ -15864,8 +15856,9 @@ c_parser_omp_cancellation_point (c_parser *parser, enum pragma_context context)
if (context != pragma_compound)
{
if (context == pragma_stmt)
- error_at (loc, "%<#pragma omp cancellation point%> may only be used in"
- " compound statements");
+ error_at (loc,
+ "%<#pragma %s%> may only be used in compound statements",
+ "omp cancellation point");
else
c_parser_error (parser, "expected declaration specifiers");
c_parser_skip_to_pragma_eol (parser, false);
@@ -16122,9 +16115,8 @@ c_parser_omp_target_update (location_t loc, c_parser *parser,
{
if (context == pragma_stmt)
{
- error_at (loc,
- "%<#pragma omp target update%> may only be "
- "used in compound statements");
+ error_at (loc, "%<#pragma %s%> may only be used in compound statements",
+ "omp target update");
c_parser_skip_to_pragma_eol (parser, false);
return false;
}
@@ -16182,9 +16174,8 @@ c_parser_omp_target_enter_data (location_t loc, c_parser *parser,
if (context == pragma_stmt)
{
- error_at (loc,
- "%<#pragma omp target enter data%> may only be "
- "used in compound statements");
+ error_at (loc, "%<#pragma %s%> may only be used in compound statements",
+ "omp target enter data");
c_parser_skip_to_pragma_eol (parser, false);
return NULL_TREE;
}
@@ -16267,9 +16258,8 @@ c_parser_omp_target_exit_data (location_t loc, c_parser *parser,
if (context == pragma_stmt)
{
- error_at (loc,
- "%<#pragma omp target exit data%> may only be "
- "used in compound statements");
+ error_at (loc, "%<#pragma %s%> may only be used in compound statements",
+ "omp target exit data");
c_parser_skip_to_pragma_eol (parser, false);
return NULL_TREE;
}