Message ID | 20230718162015.3940148-1-u.kleine-koenig@pengutronix.de (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | counter: Declare counter_priv() to be const | expand |
On Tue, Jul 18, 2023 at 06:20:15PM +0200, Uwe Kleine-König wrote: > According to the gcc manual functions "whose return value is not > affected by changes to the observable state of the program and that have > no observable effects on such state other than to return a value may > lend themselves to optimizations such as common subexpression > elimination. Declaring such functions with the 'const' attribute allows > GCC to avoid emitting some calls in repeated invocations of the function > with the same argument values." > > counter_priv() is such a function and so can be marked with the const > function attribute. > > The effect for an arm allyesconfig build according to bloat-o-meter (on > top of v6.5-rc2) is: > > add/remove: 0/1 grow/shrink: 2/14 up/down: 524/-1064 (-540) > Function old new delta > rz_mtu3_count_enable_write 632 1152 +520 > stm32_count_enable_write 372 376 +4 > ti_eqep_action_read 456 452 -4 > stm32_lptim_cnt_action_write 400 392 -8 > stm32_lptim_cnt_action_read 300 288 -12 > rz_mtu3_count_write 296 284 -12 > rz_mtu3_count_read 304 292 -12 > rz_mtu3_count_function_read 212 200 -12 > rz_mtu3_count_direction_read 268 256 -12 > rz_mtu3_action_read 628 616 -12 > rz_mtu3_count_function_write 328 312 -16 > ecap_cnt_suspend 364 340 -24 > ecap_cnt_resume 300 276 -24 > rz_mtu3_count_ceiling_write 596 560 -36 > rz_mtu3_count_enable_read 332 288 -44 > rz_mtu3_count_ceiling_read 384 340 -44 > rz_mtu3_initialize_counter 792 - -792 > Total: Before=60715, After=60175, chg -0.89% > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Queued for counter-next. Thanks, William Breathitt Gray
diff --git a/include/linux/counter.h b/include/linux/counter.h index b63746637de2..702e9108bbb4 100644 --- a/include/linux/counter.h +++ b/include/linux/counter.h @@ -399,7 +399,7 @@ struct counter_device { struct mutex ops_exist_lock; }; -void *counter_priv(const struct counter_device *const counter); +void *counter_priv(const struct counter_device *const counter) __attribute_const__; struct counter_device *counter_alloc(size_t sizeof_priv); void counter_put(struct counter_device *const counter);
According to the gcc manual functions "whose return value is not affected by changes to the observable state of the program and that have no observable effects on such state other than to return a value may lend themselves to optimizations such as common subexpression elimination. Declaring such functions with the 'const' attribute allows GCC to avoid emitting some calls in repeated invocations of the function with the same argument values." counter_priv() is such a function and so can be marked with the const function attribute. The effect for an arm allyesconfig build according to bloat-o-meter (on top of v6.5-rc2) is: add/remove: 0/1 grow/shrink: 2/14 up/down: 524/-1064 (-540) Function old new delta rz_mtu3_count_enable_write 632 1152 +520 stm32_count_enable_write 372 376 +4 ti_eqep_action_read 456 452 -4 stm32_lptim_cnt_action_write 400 392 -8 stm32_lptim_cnt_action_read 300 288 -12 rz_mtu3_count_write 296 284 -12 rz_mtu3_count_read 304 292 -12 rz_mtu3_count_function_read 212 200 -12 rz_mtu3_count_direction_read 268 256 -12 rz_mtu3_action_read 628 616 -12 rz_mtu3_count_function_write 328 312 -16 ecap_cnt_suspend 364 340 -24 ecap_cnt_resume 300 276 -24 rz_mtu3_count_ceiling_write 596 560 -36 rz_mtu3_count_enable_read 332 288 -44 rz_mtu3_count_ceiling_read 384 340 -44 rz_mtu3_initialize_counter 792 - -792 Total: Before=60715, After=60175, chg -0.89% Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> --- include/linux/counter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) base-commit: fdf0eaf11452d72945af31804e2a1048ee1b574c