On Mon, Feb 27, 2017 at 12:47:09PM +0000, Joseph Myers wrote:
> On Mon, 27 Feb 2017, Jakub Jelinek wrote:
> 
> > On Mon, Feb 27, 2017 at 11:04:36AM +0100, Volker Reichelt wrote:
> > > > This is not -Wformat-security friendly, perhaps better
> > > >           pedwarn (EXPR_LOC_OR_LOC (outer_nelts, input_location), 
> > > > OPT_Wvla,
> > > >                    typedef_variant_p (orig_type)
> > > >                    ? "non-constant array new length must be specified "
> > > >                      "directly, not by typedef"
> > > >                    : "non-constant array new length must be specified "
> > > >                      "without parentheses around the type-id");
> > > > ?
> > > 
> > > Not quite. Like this the second string doesn't end up in the gcc.pot
> > > file for translation. I had to wrap the second string in G_(...) to make
> > > it work. (I'll have a look for other instances of this pattern and
> > > prepare a separate patch.)
> > 
> > Looks like a xgettext bug or missing feature :(.  Joseph, shall we just
> > change all those to be G_() around the second string (well, some could be
> 
> Yes, it's generally the case that G_() is used whenever there's a 
> conditional expression for the msgid argument to a diagnostic function.

So, is this ok for trunk?  Shall I regenerate gcc.pot or will you?

2017-02-27  Jakub Jelinek  <ja...@redhat.com>

        * config/i386/i386.c (ix86_option_override_internal): Use
        cond ? G_("...") : G_("...") instead of just cond ? "..." : "...".
        * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
        * coverage.c (read_counts_file): Likewise.
        * omp-offload.c (oacc_loop_fixed_partitions): Likewise.
        * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
        of just cond ? "..." : "...".
c/
        * c-parser.c (c_parser_asm_statement): Use cond ? G_("...") : G_("...")
        instead of just cond ? "..." : "...".
        (c_parser_oacc_enter_exit_data): Use %s and ternary operator only
        for "enter"/"exit" keyword.
        (c_finish_oacc_routine): Don't use %s to supply portions of the
        message.
cp/
        * decl.c (find_decomp_class_base): Use cond ? G_("...") : G_("...")
        instead of just cond ? "..." : "...".
        (grokdeclarator): Likewise.
        (build_enumerator): Likewise.
        * init.c (build_new_1): Likewise.
        * call.c (build_new_method_call_1): Likewise.
        * parser.c (cp_parser_oacc_enter_exit_data): Use %s and ternary
        operator only for "enter"/"exit" keyword.
        (cp_finalize_oacc_routine): Don't use %s to supply portions of the
        message.
fortran/
        * parse.c (parse_critical_block): Use cond ? G_("...") : G_("...")
        instead of just cond ? "..." : "...".
        * scanner.c (gfc_next_char_literal): Likewise.
        * match.c (match_exit_cycle): Likewise.

--- gcc/config/i386/i386.c.jj   2017-02-21 15:38:48.000000000 +0100
+++ gcc/config/i386/i386.c      2017-02-27 15:47:08.665621000 +0100
@@ -5265,11 +5265,11 @@ ix86_option_override_internal (bool main
       else if (!strcmp (opts->x_ix86_tune_string, "x86-64"))
         warning (OPT_Wdeprecated,
                 main_args_p
-                ? "%<-mtune=x86-64%> is deprecated; use %<-mtune=k8%> "
-                  "or %<-mtune=generic%> instead as appropriate"
-                : "%<target(\"tune=x86-64\")%> is deprecated; use "
-                  "%<target(\"tune=k8\")%> or %<target(\"tune=generic\")%> "
-                  "instead as appropriate");
+                ? G_("%<-mtune=x86-64%> is deprecated; use %<-mtune=k8%> "
+                     "or %<-mtune=generic%> instead as appropriate")
+                : G_("%<target(\"tune=x86-64\")%> is deprecated; use "
+                     "%<target(\"tune=k8\")%> or %<target(\"tune=generic\")%>"
+                     " instead as appropriate"));
     }
   else
     {
@@ -5418,17 +5418,19 @@ ix86_option_override_internal (bool main
        if (!strcmp (opts->x_ix86_arch_string, "generic"))
          {
            error (main_args_p
-                 ? "%<generic%> CPU can be used only for %<-mtune=%> switch"
-                 : "%<generic%> CPU can be used only for "
-                   "%<target(\"tune=\")%> attribute");
+                  ? G_("%<generic%> CPU can be used only for %<-mtune=%> "
+                       "switch")
+                  : G_("%<generic%> CPU can be used only for "
+                       "%<target(\"tune=\")%> attribute"));
            return false;
          }
        else if (!strcmp (opts->x_ix86_arch_string, "intel"))
          {
            error (main_args_p
-                 ? "%<intel%> CPU can be used only for %<-mtune=%> switch"
-                 : "%<intel%> CPU can be used only for "
-                   "%<target(\"tune=\")%> attribute");
+                  ? G_("%<intel%> CPU can be used only for %<-mtune=%> "
+                       "switch")
+                  : G_("%<intel%> CPU can be used only for "
+                       "%<target(\"tune=\")%> attribute"));
            return false;
          }
 
@@ -5656,8 +5658,8 @@ ix86_option_override_internal (bool main
   if (i == pta_size)
     {
       error (main_args_p
-            ? "bad value (%qs) for %<-march=%> switch"
-            : "bad value (%qs) for %<target(\"arch=\")%> attribute",
+            ? G_("bad value (%qs) for %<-march=%> switch")
+            : G_("bad value (%qs) for %<target(\"arch=\")%> attribute"),
             opts->x_ix86_arch_string);
 
       auto_vec <const char *> candidates;
@@ -5674,16 +5676,16 @@ ix86_option_override_internal (bool main
       if (hint)
        inform (input_location,
                main_args_p
-               ? "valid arguments to %<-march=%> switch are: "
-                 "%s; did you mean %qs?"
-               : "valid arguments to %<target(\"arch=\")%> attribute are: "
-                 "%s; did you mean %qs?", s, hint);
+               ? G_("valid arguments to %<-march=%> switch are: "
+                    "%s; did you mean %qs?")
+               : G_("valid arguments to %<target(\"arch=\")%> attribute are: "
+                    "%s; did you mean %qs?"), s, hint);
       else
        inform (input_location,
                main_args_p
-               ? "valid arguments to %<-march=%> switch are: %s"
-               : "valid arguments to %<target(\"arch=\")%> attribute are: %s",
-               s);
+               ? G_("valid arguments to %<-march=%> switch are: %s")
+               : G_("valid arguments to %<target(\"arch=\")%> attribute "
+                    "are: %s"), s);
       XDELETEVEC (s);
     }
 
@@ -5729,8 +5731,8 @@ ix86_option_override_internal (bool main
   if (ix86_tune_specified && i == pta_size)
     {
       error (main_args_p
-            ? "bad value (%qs) for %<-mtune=%> switch"
-            : "bad value (%qs) for %<target(\"tune=\")%> attribute",
+            ? G_("bad value (%qs) for %<-mtune=%> switch")
+            : G_("bad value (%qs) for %<target(\"tune=\")%> attribute"),
             opts->x_ix86_tune_string);
 
       auto_vec <const char *> candidates;
@@ -5745,16 +5747,16 @@ ix86_option_override_internal (bool main
       if (hint)
        inform (input_location,
                main_args_p
-               ? "valid arguments to %<-mtune=%> switch are: "
-                 "%s; did you mean %qs?"
-               : "valid arguments to %<target(\"tune=\")%> attribute are: "
-                 "%s; did you mean %qs?", s, hint);
+               ? G_("valid arguments to %<-mtune=%> switch are: "
+                    "%s; did you mean %qs?")
+               : G_("valid arguments to %<target(\"tune=\")%> attribute are: "
+                    "%s; did you mean %qs?"), s, hint);
       else
        inform (input_location,
                main_args_p
-               ? "valid arguments to %<-mtune=%> switch are: %s"
-               : "valid arguments to %<target(\"tune=\")%> attribute are: %s",
-               s);
+               ? G_("valid arguments to %<-mtune=%> switch are: %s")
+               : G_("valid arguments to %<target(\"tune=\")%> attribute "
+                    "are: %s"), s);
       XDELETEVEC (s);
     }
 
@@ -5856,8 +5858,9 @@ ix86_option_override_internal (bool main
 
       if (TARGET_RTD_P (opts->x_target_flags))
        warning (0,
-                main_args_p ? "%<-mrtd%> is ignored in 64bit mode"
-                            : "%<target(\"rtd\")%> is ignored in 64bit mode");
+                main_args_p
+                ? G_("%<-mrtd%> is ignored in 64bit mode")
+                : G_("%<target(\"rtd\")%> is ignored in 64bit mode"));
     }
   else
     {
@@ -5979,8 +5982,8 @@ ix86_option_override_internal (bool main
   if (TARGET_SSEREGPARM_P (opts->x_target_flags)
       && ! TARGET_SSE_P (opts->x_ix86_isa_flags))
     error (main_args_p
-          ? "%<-msseregparm%> used without SSE enabled"
-          : "%<target(\"sseregparm\")%> used without SSE enabled");
+          ? G_("%<-msseregparm%> used without SSE enabled")
+          : G_("%<target(\"sseregparm\")%> used without SSE enabled"));
 
   if (opts_set->x_ix86_fpmath)
     {
@@ -6047,10 +6050,11 @@ ix86_option_override_internal (bool main
       if (opts_set->x_target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)
        warning (0,
                 main_args_p
-                ? "stack probing requires %<-maccumulate-outgoing-args%> "
-                  "for correctness"
-                : "stack probing requires "
-                  "%<target(\"accumulate-outgoing-args\")%> for correctness");
+                ? G_("stack probing requires %<-maccumulate-outgoing-args%> "
+                     "for correctness")
+                : G_("stack probing requires "
+                     "%<target(\"accumulate-outgoing-args\")%> for "
+                     "correctness"));
       opts->x_target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
     }
 
@@ -6062,9 +6066,10 @@ ix86_option_override_internal (bool main
       if (opts_set->x_target_flags & MASK_ACCUMULATE_OUTGOING_ARGS)
        warning (0,
                 main_args_p
-                ? "fixed ebp register requires %<-maccumulate-outgoing-args%>"
-                : "fixed ebp register requires "
-                  "%<target(\"accumulate-outgoing-args\")%>");
+                ? G_("fixed ebp register requires "
+                     "%<-maccumulate-outgoing-args%>")
+                : G_("fixed ebp register requires "
+                     "%<target(\"accumulate-outgoing-args\")%>"));
       opts->x_target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
     }
 
--- gcc/config/nvptx/nvptx.c.jj 2017-02-21 15:36:03.000000000 +0100
+++ gcc/config/nvptx/nvptx.c    2017-02-27 15:48:20.031688240 +0100
@@ -4542,8 +4542,8 @@ nvptx_goacc_validate_dims (tree decl, in
       if (fn_level < 0 && dims[GOMP_DIM_VECTOR] >= 0)
        warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
                    dims[GOMP_DIM_VECTOR]
-                   ? "using vector_length (%d), ignoring %d"
-                   : "using vector_length (%d), ignoring runtime setting",
+                   ? G_("using vector_length (%d), ignoring %d")
+                   : G_("using vector_length (%d), ignoring runtime setting"),
                    PTX_VECTOR_LENGTH, dims[GOMP_DIM_VECTOR]);
       dims[GOMP_DIM_VECTOR] = PTX_VECTOR_LENGTH;
       changed = true;
--- gcc/cp/decl.c.jj    2017-02-27 15:19:13.000000000 +0100
+++ gcc/cp/decl.c       2017-02-27 15:36:41.655834700 +0100
@@ -7224,8 +7224,9 @@ find_decomp_class_base (location_t loc,
        error_at (loc, "cannot decompose non-public member %qD of %qT",
                  field, type);
        inform (DECL_SOURCE_LOCATION (field),
-               TREE_PRIVATE (field) ? "declared private here"
-               : "declared protected here");
+               TREE_PRIVATE (field)
+               ? G_("declared private here")
+               : G_("declared protected here"));
        return error_mark_node;
       }
     else
@@ -11001,8 +11002,8 @@ grokdeclarator (const cp_declarator *dec
                  {
                    maybe_warn_cpp0x (CPP0X_REF_QUALIFIER);
                    error ((flags == DTOR_FLAG)
-                          ? "destructors may not be ref-qualified"
-                          : "constructors may not be ref-qualified");
+                          ? G_("destructors may not be ref-qualified")
+                          : G_("constructors may not be ref-qualified"));
                    rqual = REF_QUAL_NONE;
                  }
 
@@ -14484,9 +14485,10 @@ build_enumerator (tree name, tree value,
                            }
                          if (type && cxx_dialect < cxx11
                              && itk > itk_unsigned_long)
-                           pedwarn (input_location, OPT_Wlong_long, pos ? "\
-incremented enumerator value is too large for %<unsigned long%>" :  "\
-incremented enumerator value is too large for %<long%>");
+                           pedwarn (input_location, OPT_Wlong_long,
+                                    pos ? G_("\
+incremented enumerator value is too large for %<unsigned long%>") : G_("\
+incremented enumerator value is too large for %<long%>"));
                        }
                      if (type == NULL_TREE)
                        overflowed = true;
--- gcc/cp/parser.c.jj  2017-02-24 21:39:13.000000000 +0100
+++ gcc/cp/parser.c     2017-02-27 15:38:31.480392105 +0100
@@ -36293,9 +36293,8 @@ cp_parser_oacc_enter_exit_data (cp_parse
 
   if (strcmp (p, "data") != 0)
     {
-      error_at (loc, enter
-               ? "expected %<data%> after %<#pragma acc enter%>"
-               : "expected %<data%> after %<#pragma acc exit%>");
+      error_at (loc, "expected %<data%> after %<#pragma acc %s%>",
+               enter ? "enter" : "exit");
       cp_parser_skip_to_pragma_eol (parser, pragma_tok);
       return NULL_TREE;
     }
@@ -37573,8 +37572,10 @@ cp_finalize_oacc_routine (cp_parser *par
       if (TREE_USED (fndecl) || (!is_defn && DECL_SAVED_TREE (fndecl)))
        {
          error_at (parser->oacc_routine->loc,
-                   "%<#pragma acc routine%> must be applied before %s",
-                   TREE_USED (fndecl) ? "use" : "definition");
+                   TREE_USED (fndecl)
+                   ? G_("%<#pragma acc routine%> must be applied before use")
+                   : G_("%<#pragma acc routine%> must be applied before "
+                        "definition"));
          parser->oacc_routine = NULL;
          return;
        }
--- gcc/cp/init.c.jj    2017-02-27 15:19:13.000000000 +0100
+++ gcc/cp/init.c       2017-02-27 18:20:40.162038982 +0100
@@ -2806,8 +2806,8 @@ build_new_1 (vec<tree, va_gc> **placemen
        {
          pedwarn (EXPR_LOC_OR_LOC (outer_nelts, input_location), OPT_Wvla,
                   typedef_variant_p (orig_type)
-                  ? "non-constant array new length must be specified "
-                    "directly, not by typedef"
+                  ? G_("non-constant array new length must be specified "
+                       "directly, not by typedef")
                   : G_("non-constant array new length must be specified "
                        "without parentheses around the type-id"));
        }
--- gcc/cp/call.c.jj    2017-02-25 09:32:11.000000000 +0100
+++ gcc/cp/call.c       2017-02-27 15:35:04.939105117 +0100
@@ -8772,8 +8772,8 @@ build_new_method_call_1 (tree instance,
              else if (DECL_CONSTRUCTOR_P (current_function_decl)
                       || DECL_DESTRUCTOR_P (current_function_decl))
                warning (0, (DECL_CONSTRUCTOR_P (current_function_decl)
-                            ? "pure virtual %q#D called from constructor"
-                            : "pure virtual %q#D called from destructor"),
+                            ? G_("pure virtual %q#D called from constructor")
+                            : G_("pure virtual %q#D called from destructor")),
                         fn);
            }
 
--- gcc/c/c-parser.c.jj 2017-02-24 21:39:13.000000000 +0100
+++ gcc/c/c-parser.c    2017-02-27 15:33:46.634133688 +0100
@@ -6159,8 +6159,8 @@ c_parser_asm_statement (c_parser *parser
     {
       if (!c_parser_require (parser, CPP_COLON,
                             is_goto
-                            ? "expected %<:%>"
-                            : "expected %<:%> or %<)%>"))
+                            ? G_("expected %<:%>")
+                            : G_("expected %<:%> or %<)%>")))
        goto error_close_paren;
 
       /* Once past any colon, we're no longer a simple asm.  */
@@ -13925,9 +13925,8 @@ c_parser_oacc_enter_exit_data (c_parser
 
   if (strcmp (p, "data") != 0)
     {
-      error_at (loc, enter
-               ? "expected %<data%> after %<#pragma acc enter%>"
-               : "expected %<data%> after %<#pragma acc exit%>");
+      error_at (loc, "expected %<data%> after %<#pragma acc %s%>",
+               enter ? "enter" : "exit");
       parser->error = true;
       c_parser_skip_to_pragma_eol (parser);
       return;
@@ -13942,9 +13941,8 @@ c_parser_oacc_enter_exit_data (c_parser
 
   if (omp_find_clause (clauses, OMP_CLAUSE_MAP) == NULL_TREE)
     {
-      error_at (loc, enter
-               ? "%<#pragma acc enter data%> has no data movement clause"
-               : "%<#pragma acc exit data%> has no data movement clause");
+      error_at (loc, "%<#pragma acc %s data%> has no data movement clause",
+               enter ? "enter" : "exit");
       return;
     }
 
@@ -14270,8 +14268,10 @@ c_finish_oacc_routine (struct oacc_routi
   if (TREE_USED (fndecl) || (!is_defn && DECL_SAVED_TREE (fndecl)))
     {
       error_at (data->loc,
-               "%<#pragma acc routine%> must be applied before %s",
-               TREE_USED (fndecl) ? "use" : "definition");
+               TREE_USED (fndecl)
+               ? G_("%<#pragma acc routine%> must be applied before use")
+               : G_("%<#pragma acc routine%> must be applied before "
+                    "definition"));
       data->error_seen = true;
       return;
     }
--- gcc/gcov.c.jj       2017-01-22 20:27:10.000000000 +0100
+++ gcc/gcov.c  2017-02-27 15:24:49.919183680 +0100
@@ -1669,7 +1669,10 @@ read_count_file (function_t *fns)
       gcov_sync (base, length);
       if ((error = gcov_is_error ()))
        {
-         fnotice (stderr, error < 0 ? "%s:overflowed\n" : "%s:corrupted\n",
+         fnotice (stderr,
+                  error < 0
+                  ? N_("%s:overflowed\n")
+                  : N_("%s:corrupted\n"),
                   da_file_name);
          goto cleanup;
        }
--- gcc/coverage.c.jj   2017-01-01 12:45:35.000000000 +0100
+++ gcc/coverage.c      2017-02-27 15:22:31.736998766 +0100
@@ -327,7 +327,9 @@ read_counts_file (void)
       gcov_sync (offset, length);
       if ((is_error = gcov_is_error ()))
        {
-         error (is_error < 0 ? "%qs has overflowed" : "%qs is corrupted",
+         error (is_error < 0
+                ? G_("%qs has overflowed")
+                : G_("%qs is corrupted"),
                 da_file_name);
          delete counts_hash;
          counts_hash = NULL;
--- gcc/fortran/parse.c.jj      2017-02-20 13:43:22.000000000 +0100
+++ gcc/fortran/parse.c 2017-02-27 15:40:58.610459485 +0100
@@ -4340,8 +4340,8 @@ parse_critical_block (void)
   for (sd = gfc_state_stack; sd; sd = sd->previous)
     if (sd->state == COMP_OMP_STRUCTURED_BLOCK)
       gfc_error_now (is_oacc (sd)
-                    ? "CRITICAL block inside of OpenACC region at %C"
-                    : "CRITICAL block inside of OpenMP region at %C");
+                    ? G_("CRITICAL block inside of OpenACC region at %C")
+                    : G_("CRITICAL block inside of OpenMP region at %C"));
 
   s.ext.end_do_label = new_st.label1;
 
--- gcc/fortran/scanner.c.jj    2017-01-01 12:45:47.000000000 +0100
+++ gcc/fortran/scanner.c       2017-02-27 15:41:56.106706170 +0100
@@ -1406,10 +1406,11 @@ restart:
              if (i == 4)
                old_loc = gfc_current_locus;
            }
-         gfc_error (is_openmp ? "Wrong OpenACC continuation at %C: "
-                    "expected !$ACC, got !$OMP"
-                    : "Wrong OpenMP continuation at %C: "
-                    "expected !$OMP, got !$ACC");
+         gfc_error (is_openmp
+                    ? G_("Wrong OpenACC continuation at %C: "
+                         "expected !$ACC, got !$OMP")
+                    : G_("Wrong OpenMP continuation at %C: "
+                         "expected !$OMP, got !$ACC"));
        }
 
       if (c != '&')
@@ -1502,10 +1503,11 @@ restart:
              if (gfc_wide_tolower (c) != (unsigned char) "*$acc"[i])
                is_openmp = 1;
            }
-         gfc_error (is_openmp ? "Wrong OpenACC continuation at %C: "
-                    "expected !$ACC, got !$OMP"
-                    : "Wrong OpenMP continuation at %C: "
-                    "expected !$OMP, got !$ACC");
+         gfc_error (is_openmp
+                    ? G_("Wrong OpenACC continuation at %C: "
+                         "expected !$ACC, got !$OMP")
+                    : G_("Wrong OpenMP continuation at %C: "
+                         "expected !$OMP, got !$ACC"));
        }
       else if (!openmp_flag && !openacc_flag)
        for (i = 0; i < 5; i++)
--- gcc/fortran/match.c.jj      2017-02-13 12:20:49.000000000 +0100
+++ gcc/fortran/match.c 2017-02-27 15:40:04.876165309 +0100
@@ -2731,8 +2731,8 @@ match_exit_cycle (gfc_statement st, gfc_
   if (o != NULL)
     {
       gfc_error (is_oacc (p)
-                ? "%s statement at %C leaving OpenACC structured block"
-                : "%s statement at %C leaving OpenMP structured block",
+                ? G_("%s statement at %C leaving OpenACC structured block")
+                : G_("%s statement at %C leaving OpenMP structured block"),
                 gfc_ascii_statement (st));
       return MATCH_ERROR;
     }
--- gcc/omp-offload.c.jj        2017-02-14 20:40:09.000000000 +0100
+++ gcc/omp-offload.c   2017-02-27 15:27:11.694321400 +0100
@@ -1117,9 +1117,9 @@ oacc_loop_fixed_partitions (oacc_loop *l
          if (noisy)
            error_at (loop->loc,
                      seq_par
-                     ? "%<seq%> overrides other OpenACC loop specifiers"
-                     : "%<auto%> conflicts with other OpenACC loop "
-                     "specifiers");
+                     ? G_("%<seq%> overrides other OpenACC loop specifiers")
+                     : G_("%<auto%> conflicts with other OpenACC loop "
+                          "specifiers"));
          maybe_auto = false;
          loop->flags &= ~OLF_AUTO;
          if (seq_par)


        Jakub

Reply via email to