File tree Expand file tree Collapse file tree 5 files changed +28
-3
lines changed Expand file tree Collapse file tree 5 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -142,6 +142,9 @@ config AUDIT_ARCH
142
142
config ARCH_SUPPORTS_AOUT
143
143
def_bool y
144
144
145
+ config ARCH_SUPPORTS_OPTIMIZED_INLINING
146
+ def_bool y
147
+
145
148
# Use the generic interrupt handling code in kernel/irq/:
146
149
config GENERIC_HARDIRQS
147
150
bool
Original file line number Diff line number Diff line change @@ -257,3 +257,16 @@ config CPA_DEBUG
257
257
Do change_page_attr() self-tests every 30 seconds.
258
258
259
259
endmenu
260
+
261
+ config OPTIMIZE_INLINING
262
+ bool "Allow gcc to uninline functions marked 'inline'"
263
+ default y
264
+ help
265
+ This option determines if the kernel forces gcc to inline the functions
266
+ developers have marked 'inline'. Doing so takes away freedom from gcc to
267
+ do what it thinks is best, which is desirable for the gcc 3.x series of
268
+ compilers. The gcc 4.x series have a rewritten inlining algorithm and
269
+ disabling this option will generate a smaller kernel there. Hopefully
270
+ this algorithm is so good that allowing gcc4 to make the decision can
271
+ become the default in the future, until then this option is there to
272
+ test gcc for this.
Original file line number Diff line number Diff line change @@ -1421,6 +1421,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
1421
1421
# CONFIG_DEBUG_VM is not set
1422
1422
# CONFIG_DEBUG_LIST is not set
1423
1423
# CONFIG_FRAME_POINTER is not set
1424
+ CONFIG_OPTIMIZE_INLINING=y
1424
1425
# CONFIG_RCU_TORTURE_TEST is not set
1425
1426
# CONFIG_LKDTM is not set
1426
1427
# CONFIG_FAULT_INJECTION is not set
Original file line number Diff line number Diff line change @@ -1346,6 +1346,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
1346
1346
# CONFIG_DEBUG_VM is not set
1347
1347
# CONFIG_DEBUG_LIST is not set
1348
1348
# CONFIG_FRAME_POINTER is not set
1349
+ CONFIG_OPTIMIZE_INLINING=y
1349
1350
# CONFIG_RCU_TORTURE_TEST is not set
1350
1351
# CONFIG_LKDTM is not set
1351
1352
# CONFIG_FAULT_INJECTION is not set
Original file line number Diff line number Diff line change 28
28
#define __must_be_array (a ) \
29
29
BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0])))
30
30
31
- #define inline inline __attribute__((always_inline))
32
- #define __inline__ __inline__ __attribute__((always_inline))
33
- #define __inline __inline __attribute__((always_inline))
31
+ /*
32
+ * Force always-inline if the user requests it so via the .config:
33
+ */
34
+ #if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING ) || \
35
+ !defined(CONFIG_OPTIMIZE_INLINING ) && (__GNUC__ >= 4 )
36
+ # define inline inline __attribute__((always_inline))
37
+ # define __inline__ __inline__ __attribute__((always_inline))
38
+ # define __inline __inline __attribute__((always_inline))
39
+ #endif
40
+
34
41
#define __deprecated __attribute__((deprecated))
35
42
#define __packed __attribute__((packed))
36
43
#define __weak __attribute__((weak))
You can’t perform that action at this time.
0 commit comments