Conditional expressions with inline functions are not optimized away if
optimization is disabled.  Avoid such expressions to prevent dead
branches.  It helps also during code review to immediately see if a loop
is used or not.
---
 cpukit/include/rtems/score/priorityimpl.h | 33 ++++-------------------
 cpukit/score/src/kern_tc.c                |  4 +++
 cpukit/score/src/threadchangepriority.c   | 10 ++++++-
 cpukit/score/src/threadqops.c             | 16 +++++++++--
 cpukit/score/src/watchdogtick.c           |  4 +++
 5 files changed, 36 insertions(+), 31 deletions(-)

diff --git a/cpukit/include/rtems/score/priorityimpl.h 
b/cpukit/include/rtems/score/priorityimpl.h
index 1463bf6c2a..55cddf53be 100644
--- a/cpukit/include/rtems/score/priorityimpl.h
+++ b/cpukit/include/rtems/score/priorityimpl.h
@@ -124,26 +124,6 @@ RTEMS_INLINE_ROUTINE bool _Priority_Actions_is_empty(
   return actions->actions == NULL;
 }
 
-/**
- * @brief Checks if the priority actions is valid.
- *
- * @param aggregation The aggregation of the priority action.
- *
- * @retval true The @a aggregation is valid.
- * @retval false The @a aggregation is not valid.
- */
-RTEMS_INLINE_ROUTINE bool _Priority_Actions_is_valid(
-  const Priority_Aggregation *aggregation
-)
-{
-#if defined(RTEMS_SMP)
-  return aggregation != NULL;
-#else
-  (void) aggregation;
-  return false;
-#endif
-}
-
 /**
  * @brief Moves the priority actions' actions.
  *
@@ -389,25 +369,22 @@ RTEMS_INLINE_ROUTINE void _Priority_Set_action(
   aggregation->Action.type = type;
 }
 
+#if defined(RTEMS_SMP)
 /**
  * @brief Gets the next action of the priority aggregation.
  *
- * @param aggregation The priority aggregation to get the next action of.
+ * @param aggregation is the priority aggregation to get the next action of.
  *
- * @retval next_action The next action of @a aggregation if RTEMS_SMP is 
defined.
- * @retval NULL RTEMS_SMP is not defined.
+ * @return Returns the next action of the priority aggregation or NULL if there
+ *   is no next action.
  */
 RTEMS_INLINE_ROUTINE Priority_Aggregation *_Priority_Get_next_action(
   const Priority_Aggregation *aggregation
 )
 {
-#if defined(RTEMS_SMP)
   return aggregation->Action.next;
-#else
-  (void) aggregation;
-  return NULL;
-#endif
 }
+#endif
 
 /**
  * @brief Compares two priorities.
diff --git a/cpukit/score/src/kern_tc.c b/cpukit/score/src/kern_tc.c
index 2b7aeaad31..643026a1c8 100644
--- a/cpukit/score/src/kern_tc.c
+++ b/cpukit/score/src/kern_tc.c
@@ -2329,9 +2329,13 @@ _Timecounter_Tick(void)
 {
        Per_CPU_Control *cpu_self = _Per_CPU_Get();
 
+#if defined(RTEMS_SMP)
        if (_Per_CPU_Is_boot_processor(cpu_self)) {
+#endif
                 tc_windup(NULL);
+#if defined(RTEMS_SMP)
        }
+#endif
 
        _Watchdog_Tick(cpu_self);
 }
diff --git a/cpukit/score/src/threadchangepriority.c 
b/cpukit/score/src/threadchangepriority.c
index 321bb15cab..80f030fdc6 100644
--- a/cpukit/score/src/threadchangepriority.c
+++ b/cpukit/score/src/threadchangepriority.c
@@ -135,11 +135,15 @@ static void _Thread_Priority_do_perform_actions(
   priority_aggregation = _Priority_Actions_move( 
&queue_context->Priority.Actions );
 
   do {
+#if defined(RTEMS_SMP)
     Priority_Aggregation *next_aggregation;
+#endif
     Priority_Node        *priority_action_node;
     Priority_Action_type  priority_action_type;
 
+#if defined(RTEMS_SMP)
     next_aggregation = _Priority_Get_next_action( priority_aggregation );
+#endif
 
     priority_action_node = priority_aggregation->Action.node;
     priority_action_type = priority_aggregation->Action.type;
@@ -198,8 +202,12 @@ static void _Thread_Priority_do_perform_actions(
         break;
     }
 
+#if defined(RTEMS_SMP)
     priority_aggregation = next_aggregation;
-  } while ( _Priority_Actions_is_valid( priority_aggregation ) );
+  } while ( priority_aggregation != NULL );
+#else
+  } while ( false );
+#endif
 
   if ( !_Priority_Actions_is_empty( &queue_context->Priority.Actions ) ) {
     _Thread_queue_Context_add_priority_update( queue_context, the_thread );
diff --git a/cpukit/score/src/threadqops.c b/cpukit/score/src/threadqops.c
index 33fc5a44cb..fbea9f6de6 100644
--- a/cpukit/score/src/threadqops.c
+++ b/cpukit/score/src/threadqops.c
@@ -404,8 +404,12 @@ static void _Thread_queue_Priority_priority_actions(
         break;
     }
 
+#if defined(RTEMS_SMP)
     priority_aggregation = _Priority_Get_next_action( priority_aggregation );
-  } while ( _Priority_Actions_is_valid( priority_aggregation ) );
+  } while ( priority_aggregation != NULL );
+#else
+  } while ( false );
+#endif
 }
 
 static void _Thread_queue_Priority_do_initialize(
@@ -734,14 +738,18 @@ static void 
_Thread_queue_Priority_inherit_priority_actions(
   priority_aggregation = _Priority_Actions_move( priority_actions );
 
   do {
+#if defined(RTEMS_SMP)
     Priority_Aggregation        *next_aggregation;
+#endif
     Scheduler_Node              *scheduler_node;
     size_t                       scheduler_index;
     Thread_queue_Priority_queue *priority_queue;
     Scheduler_Node              *scheduler_node_of_owner;
     Priority_Action_type         priority_action_type;
 
+#if defined(RTEMS_SMP)
     next_aggregation = _Priority_Get_next_action( priority_aggregation );
+#endif
 
     scheduler_node = SCHEDULER_NODE_OF_WAIT_PRIORITY( priority_aggregation );
     scheduler_index = _Thread_queue_Scheduler_index( scheduler_node );
@@ -797,8 +805,12 @@ static void 
_Thread_queue_Priority_inherit_priority_actions(
         break;
     }
 
+#if defined(RTEMS_SMP)
     priority_aggregation = next_aggregation;
-  } while ( _Priority_Actions_is_valid( priority_aggregation ) );
+  } while ( priority_aggregation != NULL );
+#else
+  } while ( false );
+#endif
 }
 
 static void _Thread_queue_Priority_inherit_do_initialize(
diff --git a/cpukit/score/src/watchdogtick.c b/cpukit/score/src/watchdogtick.c
index 6edb3f071a..71311b598e 100644
--- a/cpukit/score/src/watchdogtick.c
+++ b/cpukit/score/src/watchdogtick.c
@@ -83,9 +83,13 @@ void _Watchdog_Tick( Per_CPU_Control *cpu )
   Thread_Control                     *executing;
   const Thread_CPU_budget_operations *cpu_budget_operations;
 
+#ifdef RTEMS_SMP
   if ( _Per_CPU_Is_boot_processor( cpu ) ) {
+#endif
     ++_Watchdog_Ticks_since_boot;
+#ifdef RTEMS_SMP
   }
+#endif
 
   _ISR_lock_ISR_disable_and_acquire( &cpu->Watchdog.Lock, &lock_context );
 
-- 
2.35.3

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

Reply via email to