OSDN Git Service

PR c++/41970
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Apr 2010 15:54:17 +0000 (15:54 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Apr 2010 15:54:17 +0000 (15:54 +0000)
* decl.c (grokvardecl): Tweak warning message.
(grokfndecl): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158071 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.old-deja/g++.other/linkage1.C

index 3d41244..a6e6f3a 100644 (file)
@@ -1,3 +1,9 @@
+2010-04-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41970
+       * decl.c (grokvardecl): Tweak warning message.
+       (grokfndecl): Likewise.
+
 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
 
        PR c++/42697
index a308d64..4ae924b 100644 (file)
@@ -6821,8 +6821,9 @@ grokfndecl (tree ctype,
                /* Allow this; it's pretty common in C.  */;
              else
                {
-                 permerror (input_location, "non-local function %q#D uses anonymous type",
-                             decl);
+                 permerror (input_location, "anonymous type with no linkage "
+                            "used to declare function %q#D with linkage",
+                            decl);
                  if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
                    permerror (input_location, "%q+#D does not refer to the unqualified "
                               "type, so it is not used for linkage",
@@ -6830,7 +6831,8 @@ grokfndecl (tree ctype,
                }
            }
          else
-           permerror (input_location, "non-local function %q#D uses local type %qT", decl, t);
+           permerror (input_location, "type %qT with no linkage used to "
+                      "declare function %q#D with linkage", t, decl);
        }
     }
 
@@ -7104,8 +7106,8 @@ grokvardecl (tree type,
                     no linkage can only be used to declare extern "C"
                     entities.  Since it's not always an error in the
                     ISO C++ 90 Standard, we only issue a warning.  */
-                 warning (0, "non-local variable %q#D uses anonymous type",
-                          decl);
+                 warning (0, "anonymous type with no linkage used to declare "
+                          "variable %q#D with linkage", decl);
                  if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
                    warning (0, "%q+#D does not refer to the unqualified "
                             "type, so it is not used for linkage",
@@ -7113,7 +7115,8 @@ grokvardecl (tree type,
                }
            }
          else
-           warning (0, "non-local variable %q#D uses local type %qT", decl, t);
+           warning (0, "type %qT with no linkage used to declare variable "
+                    "%q#D with linkage", t, decl);
        }
     }
   else
index 0032dd8..3138c8a 100644 (file)
@@ -1,3 +1,8 @@
+2010-04-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41970
+       * g++.old-deja/g++.other/linkage1.C: Adjust.
+
 2010-04-07  Dodji Seketeli  <dodji@redhat.com>
 
        PR c++/42697
index e9b5a9d..556ef97 100644 (file)
@@ -3,13 +3,13 @@ typedef struct {
   int i;
 } *p;
 
-void f (p) { }                 // { dg-error "uses anonymous type" }
-p q;                           // { dg-warning "uses anonymous type" } 
+void f (p) { }                 // { dg-error "with no linkage" }
+p q;                           // { dg-warning "with no linkage" }
 
 int main()
 {
-  extern p j;                  // { dg-warning "uses anonymous type" }
+  extern p j;                  // { dg-warning "with no linkage" }
   struct A { int j; };
-  extern A a;                  // { dg-warning "uses local type" }
-  extern void f (A);           // { dg-error "uses local type" }
+  extern A a;                  // { dg-warning "with no linkage" }
+  extern void f (A);           // { dg-error "with no linkage" }
 }