007-01-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
authorManuel López-Ibáñez <manu@gcc.gnu.org>
Mon, 29 Jan 2007 21:05:58 +0000 (21:05 +0000)
committerManuel López-Ibáñez <manu@gcc.gnu.org>
Mon, 29 Jan 2007 21:05:58 +0000 (21:05 +0000)
* c-decl.c (pop_scope): Replace warnings with call to
warn_for_unused_label.
* c-common.h (warn_for_unused_label): Declare.
* c-common.c (warn_for_unused_label): Define.
cp/
* decl.c (pop_label): Replace warning with call to
warn_for_unused_label.

From-SVN: r121310

gcc/ChangeLog
gcc/c-common.c
gcc/c-common.h
gcc/c-decl.c
gcc/cp/ChangeLog
gcc/cp/decl.c

index cc1f0c362f43aeb3548d9913ba32d6f8471ed966..2137c70f1bc9990944cf9bf90a504be7010ff62d 100644 (file)
@@ -1,3 +1,10 @@
+007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * c-decl.c (pop_scope): Replace warnings with call to
+       warn_for_unused_label.
+       * c-common.h (warn_for_unused_label): Declare.
+       * c-common.c (warn_for_unused_label): Define.
+
 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
        * tree-optimize.c (update_inlined_to_pointers): Delete unused
index 4b1718cd817dffc721c0dabe84f6a22cc7744a3a..1bd59ff5e227ae7056be37fe61a43b6086074480 100644 (file)
@@ -6758,5 +6758,18 @@ warn_about_parentheses (enum tree_code code, enum tree_code code_left,
             "have their mathematical meaning");
 }
 
+/* If LABEL (a LABEL_DECL) has not been used, issue a warning.  */
+
+void
+warn_for_unused_label (tree label)
+{
+  if (!TREE_USED (label))
+    {
+      if (DECL_INITIAL (label))
+       warning (OPT_Wunused_label, "label %q+D defined but not used", label);
+      else
+        warning (OPT_Wunused_label, "label %q+D declared but not defined", label);
+    }
+}
 
 #include "gt-c-common.h"
index 78b3497259d6bf43ddcb7107ceedea42f04e380d..5ad4582d24034c9137ecf0f674814d88b2f9573a 100644 (file)
@@ -868,6 +868,7 @@ extern tree builtin_type_for_size (int, bool);
 extern void warn_array_subscript_with_type_char (tree);
 extern void warn_about_parentheses (enum tree_code, enum tree_code,
                                    enum tree_code);
+extern void warn_for_unused_label (tree label);
 
 
 /* In c-gimplify.c  */
index f669a4729dafa603fcec6cfa7301df578511ed04..2f9ffc3b62203b4a6a2e156881e5f9d2b37244e5 100644 (file)
@@ -761,13 +761,9 @@ pop_scope (void)
              error ("label %q+D used but not defined", p);
              DECL_INITIAL (p) = error_mark_node;
            }
-         else if (!TREE_USED (p) && warn_unused_label)
-           {
-             if (DECL_INITIAL (p))
-               warning (0, "label %q+D defined but not used", p);
-             else
-               warning (0, "label %q+D declared but not defined", p);
-           }
+         else 
+           warn_for_unused_label (p);
+
          /* Labels go in BLOCK_VARS.  */
          TREE_CHAIN (p) = BLOCK_VARS (block);
          BLOCK_VARS (block) = p;
index 2d8264ea3cec080e2e828a2fac509df3f0b07dd1..0746d6af30b0e644c29b95cd08cab634ccad1a01 100644 (file)
@@ -1,3 +1,8 @@
+2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * decl.c (pop_label): Replace warning with call to
+       warn_for_unused_label.
+
 2007-01-28  Andrew Pinski  <pinskia@gmail.com>
 
        PR C++/28988
index dfd199b1a7ed6c96934b0d38a88449568c62597c..cea649ad7316d9282bcd0ccaea1e690bcc893e3b 100644 (file)
@@ -365,8 +365,8 @@ pop_label (tree label, tree old_value)
          /* Avoid crashing later.  */
          define_label (location, DECL_NAME (label));
        }
-      else if (!TREE_USED (label))
-       warning (OPT_Wunused_label, "label %q+D defined but not used", label);
+      else 
+       warn_for_unused_label (label);
     }
 
   SET_IDENTIFIER_LABEL_VALUE (DECL_NAME (label), old_value);