On 31/03/16 15:29, Gedare Bloom wrote:
+RTEMS_INLINE_ROUTINE bool _POSIX_Keys_Key_value_find_less(
Patch looks fine. I was just curious, does the compiler actually
inline this too when it is called through a function pointer?


Its good that you asked.

In general GCC is quite good at optimizing this. The generated code for the keygetspecific.c is identical before and after the patch.

In keysetspecific.c I noticed some changes since here key_value_pair->key was used instead of key for the comparison. I changed the _RBTree_Insert_inline() a bit and now the code is nearly identical (no performance impact) and we can share the less operator with _RBTree_Find_inline():

diff -u keysetspecific.s*
--- keysetspecific.s    2016-04-01 07:43:19.418847367 +0200
+++ keysetspecific.s.inline     2016-04-01 07:43:02.374888977 +0200
@@ -121,6 +121,7 @@
        isync
        cmplw 7,10,9
        bne+ 7,.L13
+       addi 4,3,8
        mr 10,24
        b .L14
        .p2align 4,,15
@@ -134,7 +135,6 @@
        cmpwi 7,9,0
        addi 8,9,4
        bne+ 7,.L17
-       addi 4,3,8
        stw 9,12(3)
        stw 9,8(3)
        li 9,1

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to