diff mbox series

counter: Declare counter_priv() to be const

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

Commit Message

Uwe Kleine-König July 18, 2023, 4:20 p.m. UTC
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

Comments

William Breathitt Gray July 24, 2023, 3:14 p.m. UTC | #1
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 mbox series

Patch

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);