Thread (55 messages) flat view 55 messages, 9 authors, 2020-02-18

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

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help