diff --git a/src/Base/EPTF_CLL_Base_Functions.ttcn b/src/Base/EPTF_CLL_Base_Functions.ttcn
index 72fdb0b..8c53834 100644
--- a/src/Base/EPTF_CLL_Base_Functions.ttcn
+++ b/src/Base/EPTF_CLL_Base_Functions.ttcn
@@ -915,7 +915,6 @@
     f_EPTF_Common_user(%definitionId& ": Assert message with id "&int2str(pl_assertNum)&" matches with the expected pattern: "& pl_expectedAssert);
     return true;
   }
-  return true;
 }
 
 ///////////////////////////////////////////////////////////
@@ -944,7 +943,6 @@
     f_EPTF_Common_user(%definitionId& ": Error message with id "&int2str(pl_errNum)&" matches with the expected pattern: "& pl_expectedError);
     return true;
   }
-  return true;
 }
 
 ///////////////////////////////////////////////////////////
diff --git a/src/Common/EPTF_CLL_Common_Functions.ttcn b/src/Common/EPTF_CLL_Common_Functions.ttcn
index c2b975c..9bc05a4 100644
--- a/src/Common/EPTF_CLL_Common_Functions.ttcn
+++ b/src/Common/EPTF_CLL_Common_Functions.ttcn
@@ -135,7 +135,6 @@
     f_EPTF_Common_user(%definitionId& ": Error message with id "&int2str(pl_errorNum)&" matches with the expected pattern: "& pl_expectedError);
     return true;
   }
-  return true;
 }
 
 ///////////////////////////////////////////////////////////
diff --git a/src/DataSource/EPTF_CLL_DataSource_Functions.ttcn b/src/DataSource/EPTF_CLL_DataSource_Functions.ttcn
index b1c3e4d..40436a5 100644
--- a/src/DataSource/EPTF_CLL_DataSource_Functions.ttcn
+++ b/src/DataSource/EPTF_CLL_DataSource_Functions.ttcn
@@ -3761,7 +3761,6 @@
       return 11; // unknown internal method
     }
   }
-  return 12; // unknown method
 }
 
 private function f_EPTF_DataSource_handleBuiltInConditions_nonblocking(
@@ -5133,29 +5132,29 @@
 //------------------------------------------------------------------
 // alternate code without clustering:    
 //  [sizeof(v_EPTF_DataSource_Msg_GetData_Buffer) != 0 and f_EPTF_DataSource_calculateNofMsgsToSend()>0] t_EPTF_DataSource_Msg_GetData_Buffer_timer.timeout {
-    // TODO: send buffer with clustering
-    
-    
-    var integer vl_buffSize := sizeof(v_EPTF_DataSource_Msg_GetData_Buffer);
-    var integer vl_lastIdx := v_EPTF_DataSource_Msg_GetData_BufferStartIdx + f_EPTF_DataSource_calculateNofMsgsToSend();
-
-    for(var integer i:=v_EPTF_DataSource_Msg_GetData_BufferStartIdx; i<vl_lastIdx; i:=i+1) {
-      EPTF_DataSourceIf.send({getData := v_EPTF_DataSource_Msg_GetData_Buffer[i].getDataMsg}) to v_EPTF_DataSource_Msg_GetData_Buffer[i].destinationCompRef;
-    }
-
-    //increase number of pending getData counter with the number of messages sent:
-    v_EPTF_DataSource_nofPendingGetData := v_EPTF_DataSource_nofPendingGetData + vl_lastIdx - v_EPTF_DataSource_Msg_GetData_BufferStartIdx;
-
-    v_EPTF_DataSource_Msg_GetData_BufferStartIdx := vl_lastIdx;
-    if (v_EPTF_DataSource_Msg_GetData_BufferStartIdx==vl_buffSize) {
-      v_EPTF_DataSource_Msg_GetData_BufferStartIdx := 0;
-      v_EPTF_DataSource_Msg_GetData_Buffer := {};
-    } else {
-      // there are still messages left in the buffer
-      t_EPTF_DataSource_Msg_GetData_Buffer_timer.start(0.001);
-      //action("**** msgs remain: ", vl_buffSize-v_EPTF_DataSource_Msg_GetData_BufferStartIdx);
-    }
-    repeat;
+//    // TODO: send buffer with clustering
+//    
+//    
+//    var integer vl_buffSize := sizeof(v_EPTF_DataSource_Msg_GetData_Buffer);
+//    var integer vl_lastIdx := v_EPTF_DataSource_Msg_GetData_BufferStartIdx + f_EPTF_DataSource_calculateNofMsgsToSend();
+//
+//    for(var integer i:=v_EPTF_DataSource_Msg_GetData_BufferStartIdx; i<vl_lastIdx; i:=i+1) {
+//      EPTF_DataSourceIf.send({getData := v_EPTF_DataSource_Msg_GetData_Buffer[i].getDataMsg}) to v_EPTF_DataSource_Msg_GetData_Buffer[i].destinationCompRef;
+//    }
+//
+//    //increase number of pending getData counter with the number of messages sent:
+//    v_EPTF_DataSource_nofPendingGetData := v_EPTF_DataSource_nofPendingGetData + vl_lastIdx - v_EPTF_DataSource_Msg_GetData_BufferStartIdx;
+//
+//    v_EPTF_DataSource_Msg_GetData_BufferStartIdx := vl_lastIdx;
+//    if (v_EPTF_DataSource_Msg_GetData_BufferStartIdx==vl_buffSize) {
+//      v_EPTF_DataSource_Msg_GetData_BufferStartIdx := 0;
+//      v_EPTF_DataSource_Msg_GetData_Buffer := {};
+//    } else {
+//      // there are still messages left in the buffer
+//      t_EPTF_DataSource_Msg_GetData_Buffer_timer.start(0.001);
+//      //action("**** msgs remain: ", vl_buffSize-v_EPTF_DataSource_Msg_GetData_BufferStartIdx);
+//    }
+//    repeat;
   }
 }
 
diff --git a/src/ExecCtrl/EPTF_CLL_ExecCtrlUIHandler_Functions.ttcn b/src/ExecCtrl/EPTF_CLL_ExecCtrlUIHandler_Functions.ttcn
index 71680f6..e8c8c38 100644
--- a/src/ExecCtrl/EPTF_CLL_ExecCtrlUIHandler_Functions.ttcn
+++ b/src/ExecCtrl/EPTF_CLL_ExecCtrlUIHandler_Functions.ttcn
@@ -2179,20 +2179,20 @@
               continue;
             }
 
-            f_EPTF_UIHandlerClient_subscribeMe ( 
-              "StatusLED." & vl_currentName, 
-              "GUI.StatusLED." & vl_currentName,
-              vl_widgetId,
-              realtime);
-
-            f_EPTF_ExecCtrl_UIHandler_debug(
-              "Last subscribed to GUI variable (SCEN / LGen status) name: "
-              &vl_currentName);
+//            f_EPTF_UIHandlerClient_subscribeMe ( 
+//              "StatusLED." & vl_currentName, 
+//              "GUI.StatusLED." & vl_currentName,
+//              vl_widgetId,
+//              realtime);
+//
+//            f_EPTF_ExecCtrl_UIHandler_debug(
+//              "Last subscribed to GUI variable (SCEN / LGen status) name: "
+//              &vl_currentName);
 
           }
 
           // Increase offset for each group
-          vl_offset := vl_offset + 1;
+//          vl_offset := vl_offset + 1;
         } // sc
       } // eg
     }
diff --git a/src/LGenBase/EPTF_CLL_LGenBase_ConfigFunctions.ttcn b/src/LGenBase/EPTF_CLL_LGenBase_ConfigFunctions.ttcn
index abc1ab6..9ef97a7 100644
--- a/src/LGenBase/EPTF_CLL_LGenBase_ConfigFunctions.ttcn
+++ b/src/LGenBase/EPTF_CLL_LGenBase_ConfigFunctions.ttcn
@@ -4597,7 +4597,6 @@
         return -1
       }
     }
-    return -1; // never executed, just to remove compilation warning
   }
 
   ///////////////////////////////////////////////////////////
@@ -6019,7 +6018,6 @@
         }
       }
     }
-    return ""; // never executed, just to remove compilation warning
   }
   ///////////////////////////////////////////////////////////
   //  Function: f_EPTF_LGenBase_iIdx2Str
@@ -6061,7 +6059,6 @@
         }
       }
     }
-    return ""; // never executed, just to remove compilation warning
   }
 
 } // Conversion
diff --git a/src/LGenBase/EPTF_CLL_LGenBase_TrafficFunctions.ttcn b/src/LGenBase/EPTF_CLL_LGenBase_TrafficFunctions.ttcn
index 9ff31cc..f60c91d 100644
--- a/src/LGenBase/EPTF_CLL_LGenBase_TrafficFunctions.ttcn
+++ b/src/LGenBase/EPTF_CLL_LGenBase_TrafficFunctions.ttcn
@@ -279,8 +279,6 @@
       f_EPTF_LGenBase_scenarioRelIdx(vl_idx, vl_eGrpIdx, vl_scInGrpIdx);
       return f_EPTF_LGenBase_getBurstCalcFunctionId( v_LGenBase_entityGroups[vl_eGrpIdx].scenarios[vl_scInGrpIdx].schedulerData.burstFuncRef.burstCalcMode );
     }
-    //Cannot reach this code
-    return -1;
   }
 
   ///////////////////////////////////////////////////////////
diff --git a/src/StatManager/EPTF_CLL_StatManager_Functions.ttcn b/src/StatManager/EPTF_CLL_StatManager_Functions.ttcn
index 2907d35..ec6f41f 100644
--- a/src/StatManager/EPTF_CLL_StatManager_Functions.ttcn
+++ b/src/StatManager/EPTF_CLL_StatManager_Functions.ttcn
@@ -466,7 +466,6 @@
       return -1;
     }    
   }
-  return -1; //this should never be executed  
 }
 
   ///////////////////////////////////////////////////////////
diff --git a/src/UIHandler/EPTF_CLL_UIHandlerVariableUI_Functions.ttcn b/src/UIHandler/EPTF_CLL_UIHandlerVariableUI_Functions.ttcn
index d524692..6bf5a71 100644
--- a/src/UIHandler/EPTF_CLL_UIHandlerVariableUI_Functions.ttcn
+++ b/src/UIHandler/EPTF_CLL_UIHandlerVariableUI_Functions.ttcn
@@ -863,8 +863,6 @@
         return "";
       }
     }
-    // control never reaches this point but gcc complains on the generated code.
-    return "";
   }
 }
 
diff --git a/src/UIHandler/EPTF_CLL_UIHandler_WidgetFunctions.ttcn b/src/UIHandler/EPTF_CLL_UIHandler_WidgetFunctions.ttcn
index a7ea281..5c58dfa 100644
--- a/src/UIHandler/EPTF_CLL_UIHandler_WidgetFunctions.ttcn
+++ b/src/UIHandler/EPTF_CLL_UIHandler_WidgetFunctions.ttcn
@@ -1,10 +1,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 //                                                                           //
-// Copyright (c) 2000-2019 Ericsson Telecom AB                               //
-//                                                                           //
-// All rights reserved. This program and the accompanying materials          //
-// are made available under the terms of the Eclipse Public License v2.0     //
-// which accompanies this distribution, and is available at                  //
+// Copyright (c) 2000-2019 Ericsson Telecom AB                               //
+//                                                                           //
+// All rights reserved. This program and the accompanying materials          //
+// are made available under the terms of the Eclipse Public License v2.0     //
+// which accompanies this distribution, and is available at                  //
 // https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                 //
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -3130,7 +3130,6 @@
           return false;
         }
       }
-      return true;
     }
 
     ///////////////////////////////////////////////////////////
@@ -3576,10 +3575,6 @@
         pl_widgets := {spacer := {0.0,omit}}; // a dummy widget - omit can not be used
         return;
       }
-      // control will never go here, but we need these because of gcc
-      pl_succ := false;
-      pl_widgets := {spacer := {0.0,omit}};
-      return;
     }
     ///////////////////////////////////////////////////////////
     //  Function: f_EPTF_UIHandler_widgetList
@@ -9532,7 +9527,6 @@
       } else {
         return vl_getDataResult;
       }
-      return vl_getDataResult;
     }
 
 
@@ -9580,7 +9574,6 @@
       } else {
         return vl_getDataResult;
       }
-      return vl_getDataResult;
     }
 
     private function f_EPTF_UIhandler_simulation_getDefaultValue(in EPTF_UIHandler_GuiItemRec pl_widgetRec, out EPTF_Var_DirectContent vl_defaultValue) {
@@ -11060,7 +11053,6 @@
       f_EPTF_UIHandler_warning("Unhandled widget type in "&%definitionId&": "&log2str(pl_xul));
       return false;
     }
-    return true;
   }
 
 
