On Mon, Oct 17, 2016 at 2:17 PM, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > Hi Alexey, > > On Mon, Oct 17, 2016 at 1:12 PM, Alexey Dobriyan <adobriyan@xxxxxxxxx> wrote: >> On Mon, Oct 17, 2016 at 1:01 PM, Adam Borowski <kilobyte@xxxxxxxxxx> wrote: >>> On Mon, Oct 17, 2016 at 05:59:51PM +1100, Nicholas Piggin wrote: >>>> On Mon, 17 Oct 2016 08:51:31 +0200 >>>> Adam Borowski <kilobyte@xxxxxxxxxx> wrote: >> >>> --- /dev/null >>> +++ b/include/asm-generic/asm-prototypes.h >>> @@ -0,0 +1,7 @@ >>> +#include <linux/bitops.h> >>> +extern void *__memset(void *, int, __kernel_size_t); >>> +extern void *__memcpy(void *, const void *, __kernel_size_t); >>> +extern void *__memmove(void *, const void *, __kernel_size_t); >>> +extern void *memset(void *, int, __kernel_size_t); >>> +extern void *memcpy(void *, const void *, __kernel_size_t); >>> +extern void *memmove(void *, const void *, __kernel_size_t); >> >> Before too late, those extern keywords aren't needed and >> only slowdown compilation. > > Do you have any profiling data backing this? It is easy to obtain. Here is top 10 with runtime bigger than 0.50%: _int_malloc ht_lookup_with_hash _cpp_lex_direct cpp_get_token_1 ggc_internal_alloc_statm _int_free malloc_consolidate lex_identifier enter_macro_context c_lex_with_flags bitmap_set_bit malloc grokdeclarator htab_find_slot_with_hash c_lex_one_token _cpp_lex_token pop_scopev c_parser_declspecs Imagine you're a compiler. Those extern's are tokens. They need to be parsed (byte-by-byte), allocated, and, in case of "extern" with prototype, thrown away. They make line longer forcing people to dance around with splitting per 80 characters and generally making everything somewhat slower. Might as well don't new ones. bitops.h is wrong header as well. Why do you need bitops for bunch of function prototypes? -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html