Re: [PATCHv8 02/34] lib/vdso: make do_hres and do_coarse as __always_inline

From
Thomas Gleixner <hidden>
Date
2020-01-10 12:02:39
Also in
lkml
Reply to
Vincenzo Frascino, 2020-01-10
Vincenzo Frascino [off-list ref] writes:
On 1/10/20 11:42 AM, Thomas Gleixner wrote:
quoted
quoted
quoted
+» » /*·goto·allows·to·avoid·extra·inlining·of·do_hres.·*/
+» » goto·out_hres;
What is the performance impact of "goto out_hres"?
On x86 it's invisible at least in my limited testing.
On arm64 as well based on mine as well. Shall we keep the code more readable
here (without goto)?
The delta patch below makes it readable again and also avoids the double
inlining. Quick testing shows no difference.

Thanks,

        tglx

8<---------------
--- a/lib/vdso/gettimeofday.c
+++ b/lib/vdso/gettimeofday.c
@@ -98,17 +98,15 @@ static __maybe_unused int
 	msk = 1U << clock;
 	if (likely(msk & VDSO_HRES)) {
 		vd = &vd[CS_HRES_COARSE];
-out_hres:
-		return do_hres(vd, clock, ts);
 	} else if (msk & VDSO_COARSE) {
 		do_coarse(&vd[CS_HRES_COARSE], clock, ts);
 		return 0;
 	} else if (msk & VDSO_RAW) {
 		vd = &vd[CS_RAW];
-		/* This goto avoids extra inlining of do_hres. */
-		goto out_hres;
+	} else {
+		return -1;
 	}
-	return -1;
+	return do_hres(vd, clock, ts);
 }
 
 static __maybe_unused int
Thread (55 messages) 55 messages, 9 authors, last reply 2020-02-18
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help