[rtems commit] score: Optimize _TLS_Get_size()

Sebastian Huber sebh at rtems.org
Wed Dec 11 08:06:28 UTC 2019


Module:    rtems
Branch:    master
Commit:    cc466a53a1a5ce1d5cce848cc3a24bef5afacc2d
Changeset: http://git.rtems.org/rtems/commit/?id=cc466a53a1a5ce1d5cce848cc3a24bef5afacc2d

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Sat Dec  7 20:30:30 2019 +0100

score: Optimize _TLS_Get_size()

---

 cpukit/include/rtems/score/tls.h | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/cpukit/include/rtems/score/tls.h b/cpukit/include/rtems/score/tls.h
index 941de71..dadcb77 100644
--- a/cpukit/include/rtems/score/tls.h
+++ b/cpukit/include/rtems/score/tls.h
@@ -87,15 +87,20 @@ typedef struct {
 /**
  * @brief Gets the TLS size.
  *
- * @return the TLS size.
+ * @return The TLS size.
  */
 static inline uintptr_t _TLS_Get_size( void )
 {
+  uintptr_t size;
+
   /*
-   * Do not use _TLS_Size here since this will lead GCC to assume that this
-   * symbol is not 0 and the tests for 0 will be optimized away.
+   * We must be careful with using _TLS_Size here since this could lead GCC to
+   * assume that this symbol is not 0 and the tests for 0 will be optimized
+   * away.
    */
-  return (uintptr_t) _TLS_BSS_end - (uintptr_t) _TLS_Data_begin;
+  size = (uintptr_t) _TLS_Size;
+  RTEMS_OBFUSCATE_VARIABLE( size );
+  return size;
 }
 
 /**



More information about the vc mailing list