lkml.org 
[lkml]   [2004]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: __attribute__((unused))
On Thu, Oct 14, 2004 at 10:02:43PM +0100, Russell King wrote:
>
> I notice that module.h contains stuff like:
>
> #define MODULE_GENERIC_TABLE(gtype,name) \
> extern const struct gtype##_id __mod_##gtype##_table \
> __attribute__ ((unused, alias(__stringify(name))))
>
> and even:
>
> #define __MODULE_INFO(tag, name, info) \
> static const char __module_cat(name,__LINE__)[] \
> __attribute_used__ \
> __attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info
>
> My understanding is that we shouldn't be using __attribute__((unused))
> in either of these - can someone confirm.
>
> The second one looks fairly dodgy since we're telling a compiler that
> it's both used and unused. That sounds a bit like a HHGTTG puzzle (you
> have tea and no tea.)

This makes sense, assuming the gcc info pages are correct:
`unused'
This attribute, attached to a function, means that the function is
meant to be possibly unused. GCC will not produce a warning for
this function. GNU C++ does not currently support this attribute
as definitions without parameters are valid in C++.

`used'
This attribute, attached to a function, means that code must be
emitted for the function even if it appears that the function is
not referenced. This is useful, for example, when the function is
referenced only in inline assembly.

So, a function could be "used" and "unused" at the same time:

unused -> don't warn
used -> don't discard

--
Frank
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:07    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site