Messages in this thread | | | Date | Mon, 11 Dec 2006 07:57:00 -0500 | From | Jeff Garzik <> | Subject | Re: Mark bitrevX() functions as const |
| |
David Howells wrote: > Mark the bit reversal functions as being const as they always return the same > output for any given input. > > Signed-Off-By: David Howells <dhowells@redhat.com> > --- > > include/linux/bitrev.h | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/linux/bitrev.h b/include/linux/bitrev.h > index 05e540d..032056b 100644 > --- a/include/linux/bitrev.h > +++ b/include/linux/bitrev.h > @@ -5,11 +5,11 @@ #include <linux/types.h> > > extern u8 const byte_rev_table[256]; > > -static inline u8 bitrev8(u8 byte) > +static inline __attribute__((const)) u8 bitrev8(u8 byte) > { > return byte_rev_table[byte]; > } > > -extern u32 bitrev32(u32 in); > +extern __attribute__((const)) u32 bitrev32(u32 in);
Comments:
* overall, I agree with this type of change. several Linux lib functions could use this sort of annotation.
* I question its usefulness on static [inline] functions, because the compiler should be able to figure out side effects. have you examined before-and-after asm to see if the code generation changes for the inlined area?
* naked __attribute__ is ugly. define something short and memorable in include/linux/compiler.h.
* another annotation to consider is C99 keyword 'restrict'.
Jeff
- 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/
| |