diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c81b0d0bd94df7b21ee22896f78f261b8e6bbfab..769f7f010c834ce529407bc0ba2f9363c8ef10f2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-07-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+	* c-pragma.c (apply_pragma_weak): Don't use warning_with_decl.
+	* toplev.h (warning): Remove attribute.
+
 2003-07-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
 	* c-decl.c (c_finish_incomplete_decl): Don't use xxx_with_decl.
diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c
index bd53c806dd75c018e75ce3d4f14ee0e7edca0c72..d74e6ff1f843825660b5843602e498a9b81162bf 100644
--- a/gcc/c-pragma.c
+++ b/gcc/c-pragma.c
@@ -275,7 +275,8 @@ apply_pragma_weak (tree decl, tree value)
   if (SUPPORTS_WEAK && DECL_EXTERNAL (decl) && TREE_USED (decl)
       && !DECL_WEAK (decl) /* don't complain about a redundant #pragma */
       && TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)))
-    warning_with_decl (decl, "applying #pragma weak `%s' after first use results in unspecified behavior");
+    warning ("%Happlying #pragma weak '%D' after first use results "
+             "in unspecified behavior", &DECL_SOURCE_LOCATION (decl), decl);
 
   declare_weak (decl);
 }
diff --git a/gcc/toplev.h b/gcc/toplev.h
index a5d0c532e3aacbc4467e2bf9057653b9ef03a5b9..75bf64c0660b66dcaaaae8440677d4c6788008a7 100644
--- a/gcc/toplev.h
+++ b/gcc/toplev.h
@@ -55,7 +55,7 @@ extern void _fatal_insn (const char *, rtx, const char *, int, const char *)
 #endif
 extern void internal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
      ATTRIBUTE_NORETURN;
-extern void warning (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
+extern void warning (const char *, ...);
 extern void error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
 extern void fatal_error (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2)
      ATTRIBUTE_NORETURN;