[PATCH] deprecated function attribute

Robert Love
2002-12-28T17:42:14Z

On Sat, 2002-12-28 at 10:30, Alexander Kellett wrote:

> can gcc 3.2's __attribute__((deprecated)) be used?

I just tested it and it seems to work. If we mark a function as
deprecated, then each use of the function emits a warning like:

foo.c:12: warning: `baz' is deprecated (declared at bar.c:60)

Which is very informative, giving both the location of each usage and
where the little bastard is declared.

It seems like this was added in gcc 3.0, not 3.2? It was at least in
3.1...

Attached patch adds support for usage of the attribute as "deprecated"
and is backward-compatible. Usage is:

int deprecated foo(void)

etc.. The attached patch is _entirely_ untested.

Robert Love

compiler.h | 13 +++++++++++++
1 files changed, 13 insertions(+)

diff -urN linux-2.5.53/include/linux/compiler.h linux/include/linux/compiler.h
--- linux-2.5.53/include/linux/compiler.h 2002-12-28 12:38:56.000000000 -0500
+++ linux/include/linux/compiler.h 2002-12-28 12:45:03.000000000 -0500
@@ -13,6 +13,19 @@
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)

+/*
+ * Allow us to mark functions as 'deprecated' and have gcc emit a nice
+ * warning for each use, in hopes of speeding the functions removal.
+ * Usage is:
+ * int deprecated foo(void)
+ * and then gcc will emit a warning for each usage of the function.
+ */
+#if __GNUC__ == 3
+#define deprecated __attribute__((deprecated))
+#else
+#define deprecated
+#endif
+
/* This macro obfuscates arithmetic on a variable address so that gcc
shouldn't recognize the original var, and make assumptions about it */
#define RELOC_HIDE(ptr, off) \