Hi!

The following patch fixes a couple of issues in i386.c diagnostics.

In particular, diagnostics emitted to the user (not in dump files)
should not start with a capital letter unless it is something that
starts with capital letter in a middle of a sentence, and should not end
with a period.  The ix86_handle_interrupt_attribute hunk is also something
the translators requested, the wording has been composed in a weird way
from portions of a keyword in the message and portions from (untranslated)
strings, the change surrounds it with quotes and makes the whole type name
come from untranslated string literal.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2019-03-07  Jakub Jelinek  <ja...@redhat.com>

        PR target/80003
        * config/i386/i386.c (ix86_set_func_type): Make sure diagnostics
        doesn't start with a capital letter and doesn't end with a dot.
        (ix86_function_arg_boundary): Make sure diagnostics doesn't start
        with a capital letter.
        (ix86_mangle_function_version_assembler_name): Likewise.
        (ix86_generate_version_dispatcher_body): Likewise.
        (fold_builtin_cpu): Likewise.
        (get_builtin_code_for_version): Likewise.  Remove extraneous space.
        (ix86_handle_interrupt_attribute): Make the diagnostics easier for
        translators, wrap full type name in %qs.

        * gcc.target/i386/pr68657.c: Adjust expected diagnostics wording.
        * gcc.target/i386/interrupt-6.c: Likewise.
        * g++.target/i386/pr57362.C: Adjust capitalization in dg-prune-output.

--- gcc/config/i386/i386.c.jj   2019-02-28 21:48:51.662326676 +0100
+++ gcc/config/i386/i386.c      2019-03-07 17:22:43.787842967 +0100
@@ -5800,8 +5800,8 @@ ix86_set_func_type (tree fndecl)
 
          /* Only dwarf2out.c can handle -WORD(AP) as a pointer argument.  */
          if (write_symbols != NO_DEBUG && write_symbols != DWARF2_DEBUG)
-           sorry ("Only DWARF debug format is supported for interrupt "
-                  "service routine.");
+           sorry ("only DWARF debug format is supported for interrupt "
+                  "service routine");
        }
       else
        {
@@ -9069,7 +9069,7 @@ ix86_function_arg_boundary (machine_mode
        {
          warned = true;
          inform (input_location,
-                 "The ABI for passing parameters with %d-byte"
+                 "the ABI for passing parameters with %d-byte"
                  " alignment has changed in GCC 4.6",
                  align / BITS_PER_UNIT);
        }
@@ -32116,7 +32116,7 @@ get_builtin_code_for_version (tree decl,
       if (predicate_list && arg_str == NULL)
        {
          error_at (DECL_SOURCE_LOCATION (decl),
-               "No dispatcher found for the versioning attributes");
+                   "no dispatcher found for the versioning attributes");
          return 0;
        }
     
@@ -32166,7 +32166,7 @@ get_builtin_code_for_version (tree decl,
       if (predicate_list && i == NUM_FEATURES)
        {
          error_at (DECL_SOURCE_LOCATION (decl),
-                   "No dispatcher found for %s", token);
+                   "no dispatcher found for %s", token);
          return 0;
        }
       token = strtok (NULL, ",");
@@ -32176,7 +32176,7 @@ get_builtin_code_for_version (tree decl,
   if (predicate_list && predicate_chain == NULL_TREE)
     {
       error_at (DECL_SOURCE_LOCATION (decl),
-               "No dispatcher found for the versioning attributes : %s",
+               "no dispatcher found for the versioning attributes: %s",
                attrs_str);
       return 0;
     }
@@ -32338,12 +32338,12 @@ ix86_mangle_function_version_assembler_n
       && lookup_attribute ("gnu_inline",
                           DECL_ATTRIBUTES (decl)))
     error_at (DECL_SOURCE_LOCATION (decl),
-             "Function versions cannot be marked as gnu_inline,"
+             "function versions cannot be marked as gnu_inline,"
              " bodies have to be generated");
 
   if (DECL_VIRTUAL_P (decl)
       || DECL_VINDEX (decl))
-    sorry ("Virtual function multiversioning not supported");
+    sorry ("virtual function multiversioning not supported");
 
   version_attr = lookup_attribute ("target", DECL_ATTRIBUTES (decl));
 
@@ -32619,7 +32619,7 @@ ix86_generate_version_dispatcher_body (v
         virtual methods in base classes but are not explicitly marked as
         virtual.  */
       if (DECL_VINDEX (versn->decl))
-       sorry ("Virtual function multiversioning not supported");
+       sorry ("virtual function multiversioning not supported");
 
       fn_ver_vec.safe_push (versn->decl);
     }
@@ -32898,7 +32898,7 @@ fold_builtin_cpu (tree fndecl, tree *arg
         STRING_CST.   */
       if (!EXPR_P (param_string_cst))
        {
-         error ("Parameter to builtin must be a string constant or literal");
+         error ("parameter to builtin must be a string constant or literal");
          return integer_zero_node;
        }
       param_string_cst = TREE_OPERAND (EXPR_CHECK (param_string_cst), 0);
@@ -32923,7 +32923,7 @@ fold_builtin_cpu (tree fndecl, tree *arg
 
       if (i == NUM_ARCH_NAMES)
        {
-         error ("Parameter to builtin not valid: %s",
+         error ("parameter to builtin not valid: %s",
                 TREE_STRING_POINTER (param_string_cst));
          return integer_zero_node;
        }
@@ -32973,7 +32973,7 @@ fold_builtin_cpu (tree fndecl, tree *arg
 
       if (i == NUM_ISA_NAMES)
        {
-         error ("Parameter to builtin not valid: %s",
+         error ("parameter to builtin not valid: %s",
                 TREE_STRING_POINTER (param_string_cst));
          return integer_zero_node;
        }
@@ -41417,11 +41417,12 @@ ix86_handle_interrupt_attribute (tree *n
        {
          if (TREE_CODE (TREE_VALUE (current_arg_type)) != INTEGER_TYPE
              || TYPE_MODE (TREE_VALUE (current_arg_type)) != word_mode)
-           error ("interrupt service routine should have unsigned %s"
-                  "int as the second argument",
+           error ("interrupt service routine should have %qs "
+                  "as the second argument",
                   TARGET_64BIT
-                  ? (TARGET_X32 ? "long long " : "long ")
-                  : "");
+                  ? (TARGET_X32 ? "unsigned long long int"
+                                : "unsigned long int")
+                  : "unsigned int");
        }
       nargs++;
       current_arg_type = TREE_CHAIN (current_arg_type);
--- gcc/testsuite/gcc.target/i386/pr68657.c.jj  2017-05-05 09:19:48.916719767 
+0200
+++ gcc/testsuite/gcc.target/i386/pr68657.c     2019-03-07 18:35:13.568961336 
+0100
@@ -4,7 +4,7 @@
 typedef int V __attribute__((vector_size (64)));
 
 void foo (V x, V *y) { /* { dg-error "AVX512F vector argument without AVX512F 
enabled" } */
-  /* { dg-message "The ABI for passing parameters with 64-byte alignment has 
changed" "" { target *-*-* } .-1 } */
+  /* { dg-message "the ABI for passing parameters with 64-byte alignment has 
changed" "" { target *-*-* } .-1 } */
   *y = x;
 }
 
--- gcc/testsuite/gcc.target/i386/interrupt-6.c.jj      2016-06-03 
21:25:13.165722883 +0200
+++ gcc/testsuite/gcc.target/i386/interrupt-6.c 2019-03-07 18:36:01.519179045 
+0100
@@ -8,7 +8,7 @@ extern int error;
 __attribute__((interrupt))
 void
 fn1 (void *p, short error_code)
-{ /* { dg-error "interrupt service routine should have unsigned \(long long 
|long |\)int as the second argument" } */
+{ /* { dg-error "interrupt service routine should have 'unsigned \(long long 
|long |\)int' as the second argument" } */
 }
 
 __attribute__((interrupt))
--- gcc/testsuite/g++.target/i386/pr57362.C.jj  2018-11-20 21:39:05.211507660 
+0100
+++ gcc/testsuite/g++.target/i386/pr57362.C     2019-03-07 18:37:48.892427289 
+0100
@@ -199,4 +199,4 @@ int foo(void) { return 1; }
 /* { dg-prune-output "attribute.* is unknown" } */
 /* { dg-prune-output "missing 'target' attribute*" } */
 /* { dg-prune-output "redefinition of 'int foo" } */
-/* { dg-prune-output "No dispatcher found for" } */
+/* { dg-prune-output "no dispatcher found for" } */

        Jakub

Reply via email to