]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/61852 (Incorrect column number for -Wimplicit-function-declaration)
authorMarek Polacek <polacek@redhat.com>
Sun, 20 Jul 2014 10:43:26 +0000 (10:43 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Sun, 20 Jul 2014 10:43:26 +0000 (10:43 +0000)
PR c/61852
* c-decl.c (implicit_decl_warning): Add location_t parameter.  Use it.
(implicitly_declare): Pass location to implicit_decl_warning.

* gcc.dg/pr61852.c: New test.

From-SVN: r212865

gcc/c/ChangeLog
gcc/c/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr61852.c [new file with mode: 0644]

index 260aa082a3c58205f8c9661671fbde6fdc388c97..010649798972d95c3d2a0fe0edad14780e41709f 100644 (file)
@@ -1,3 +1,9 @@
+2014-07-20  Marek Polacek  <polacek@redhat.com>
+
+       PR c/61852
+       * c-decl.c (implicit_decl_warning): Add location_t parameter.  Use it.
+       (implicitly_declare): Pass location to implicit_decl_warning.
+
 2014-07-14  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/61294
index 0ca2e0d58f4c355389ab0722bc26fe3f007f9f00..425fc5883ed64b41994ae14ef69df453d5748922 100644 (file)
@@ -2951,18 +2951,18 @@ pushdecl_top_level (tree x)
 }
 \f
 static void
-implicit_decl_warning (tree id, tree olddecl)
+implicit_decl_warning (location_t loc, tree id, tree olddecl)
 {
   if (warn_implicit_function_declaration)
     {
       bool warned;
 
       if (flag_isoc99)
-       warned = pedwarn (input_location, OPT_Wimplicit_function_declaration,
+       warned = pedwarn (loc, OPT_Wimplicit_function_declaration,
                          "implicit declaration of function %qE", id);
       else
-       warned = warning (OPT_Wimplicit_function_declaration,
-                         G_("implicit declaration of function %qE"), id);
+       warned = warning_at (loc, OPT_Wimplicit_function_declaration,
+                            G_("implicit declaration of function %qE"), id);
       if (olddecl && warned)
        locate_old_decl (olddecl);
     }
@@ -3015,7 +3015,7 @@ implicitly_declare (location_t loc, tree functionid)
             then recycle the old declaration but with the new type.  */
          if (!C_DECL_IMPLICIT (decl))
            {
-             implicit_decl_warning (functionid, decl);
+             implicit_decl_warning (loc, functionid, decl);
              C_DECL_IMPLICIT (decl) = 1;
            }
          if (DECL_BUILT_IN (decl))
@@ -3052,7 +3052,7 @@ implicitly_declare (location_t loc, tree functionid)
   DECL_EXTERNAL (decl) = 1;
   TREE_PUBLIC (decl) = 1;
   C_DECL_IMPLICIT (decl) = 1;
-  implicit_decl_warning (functionid, 0);
+  implicit_decl_warning (loc, functionid, 0);
   asmspec_tree = maybe_apply_renaming_pragma (decl, /*asmname=*/NULL);
   if (asmspec_tree)
     set_user_assembler_name (decl, TREE_STRING_POINTER (asmspec_tree));
index c879f56315fb1b74fabd31717f4f5d6a19819aa1..19d3bd68e3c8b9a8b69ab942768cadbbbcab6925 100644 (file)
@@ -1,3 +1,8 @@
+2014-07-20  Marek Polacek  <polacek@redhat.com>
+
+       PR c/61852
+       * gcc.dg/pr61852.c: New test.
+
 2014-07-19  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc.dg/stack-usage-2.c: Adjust.
diff --git a/gcc/testsuite/gcc.dg/pr61852.c b/gcc/testsuite/gcc.dg/pr61852.c
new file mode 100644 (file)
index 0000000..f488aca
--- /dev/null
@@ -0,0 +1,10 @@
+/* PR c/61852 */
+/* { dg-do compile } */
+/* { dg-options "-Wimplicit-function-declaration" } */
+
+int
+f (int a)
+{
+  int b = a + a + a + ff (a); /* { dg-warning "23:implicit declaration of function" } */
+  return b;
+}