Skip to content

Commit

Permalink
[PATCH] slab: alpha inlining fix
Browse files Browse the repository at this point in the history
It is essential that index_of() be inlined.  But alpha undoes the gcc
inlining hackery and index_of() ends up out-of-line.  So fiddle with things
to make that function inline again.

Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Ivan Kokshaysky authored and Linus Torvalds committed Sep 23, 2005
1 parent 4b3c86a commit 7243cc0
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
5 changes: 4 additions & 1 deletion include/asm-alpha/compiler.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,9 @@
#undef inline
#undef __inline__
#undef __inline

#if __GNUC__ == 3 && __GNUC_MINOR__ >= 1 || __GNUC__ > 3
#undef __always_inline
#define __always_inline inline __attribute__((always_inline))
#endif

#endif /* __ALPHA_COMPILER_H */
7 changes: 4 additions & 3 deletions mm/slab.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,12 +308,12 @@ struct kmem_list3 __initdata initkmem_list3[NUM_INIT_LISTS];
#define SIZE_L3 (1 + MAX_NUMNODES)

/*
* This function may be completely optimized away if
* This function must be completely optimized away if
* a constant is passed to it. Mostly the same as
* what is in linux/slab.h except it returns an
* index.
*/
static inline int index_of(const size_t size)
static __always_inline int index_of(const size_t size)
{
if (__builtin_constant_p(size)) {
int i = 0;
Expand All @@ -329,7 +329,8 @@ static inline int index_of(const size_t size)
extern void __bad_size(void);
__bad_size();
}
}
} else
BUG();
return 0;
}

Expand Down

0 comments on commit 7243cc0

Please sign in to comment.