diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index aad2745..2f5e561 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1395,7 +1395,8 @@
 #else // WIN32
         // Convert dot to svg if dot available
         if(access( "/usr/bin/dot", X_OK) != -1) {
-            system("/usr/bin/dot pipeline_dump.dot -Tsvg -o pipeline_dump.svg");
+            int retval = system("/usr/bin/dot pipeline_dump.dot -Tsvg -o pipeline_dump.svg");
+            assert(retval != -1);
         }
 #endif // WIN32
     }
@@ -2715,7 +2716,8 @@
         dumpDotFile(g_lastCmdBuffer[getTIDIndex()], "/tmp/tmp.dot");
         char dotCmd[1024];
         sprintf(dotCmd, "%s /tmp/tmp.dot -Tpng -o %s", dotExe, outFileName);
-        system(dotCmd);
+        int retval = system(dotCmd);
+        assert(retval != -1);
         remove("/tmp/tmp.dot");
     }
     else {
diff --git a/loader/loader.c b/loader/loader.c
index 7f9a9b3..7c7597e 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1179,11 +1179,12 @@
 
     scanned_icds = loader.scanned_icd_list;
     while (scanned_icds) {
-        if (scanned_icds->instance)
+        if (scanned_icds->instance) {
             res = scanned_icds->DestroyInstance(scanned_icds->instance);
-        if (res != VK_SUCCESS)
-            loader_log(VK_DBG_MSG_WARNING, 0,
-                        "ICD ignored: failed to DestroyInstance on device");
+            if (res != VK_SUCCESS)
+                loader_log(VK_DBG_MSG_WARNING, 0,
+                            "ICD ignored: failed to DestroyInstance on device");
+        }
         scanned_icds->instance = VK_NULL_HANDLE;
         scanned_icds = scanned_icds->next;
     }
@@ -1201,7 +1202,7 @@
     struct loader_instance *ptr_instance = (struct loader_instance *) instance;
     struct loader_icd *icd;
     uint32_t n, count = 0;
-    VkResult res;
+    VkResult res = VK_ERROR_UNKNOWN;
 
     //in spirit of VK don't error check on the instance parameter
     icd = ptr_instance->icds;
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 0ee92e1..7ba8874 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -477,14 +477,12 @@
         input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_TRANSFER_BIT;
         break;
 
-    case VK_IMAGE_LAYOUT_CLEAR_OPTIMAL:
-        break;
-
     case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:
         output_mask = VK_MEMORY_OUTPUT_TRANSFER_BIT;
         input_mask = VK_MEMORY_INPUT_SHADER_READ_BIT | VK_MEMORY_INPUT_TRANSFER_BIT;
         break;
 
+    case VK_IMAGE_LAYOUT_CLEAR_OPTIMAL:
     default:
         output_mask =  all_cache_outputs;
         input_mask = all_cache_inputs;
@@ -498,7 +496,7 @@
 void VkImageObj::SetLayout(VkImageAspect aspect,
                            VkImageLayout image_layout)
 {
-    VkResult err;
+    VkResult U_ASSERT_ONLY err;
     VkCommandBufferObj cmd_buf(m_device);
 
     /* Build command buffer to set image layout in the driver */
@@ -598,7 +596,7 @@
 
 VkResult VkImageObj::CopyImage(VkImageObj &src_image)
 {
-    VkResult err;
+    VkResult U_ASSERT_ONLY err;
     VkCommandBufferObj cmd_buf(m_device);
     VkImageLayout src_image_layout, dest_image_layout;
 
@@ -875,6 +873,8 @@
         break;
     default:
         assert(!"unknown index type");
+        m_stride = 2;
+        viewFormat = VK_FORMAT_R16_UINT;
         break;
     }
 
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index cb79abb..9a5df36 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -432,7 +432,7 @@
 
 void  TestFrameworkVkPresent::Display()
 {
-    VkResult err;
+    VkResult U_ASSERT_ONLY err;
 
     VkPresentInfoWSI present = {};
     present.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_WSI;
@@ -523,7 +523,7 @@
 
 void TestFrameworkVkPresent::CreateSwapChain()
 {
-    VkResult err;
+    VkResult U_ASSERT_ONLY err;
 
     VkSwapChainCreateInfoWSI swap_chain = {};
     swap_chain.sType = VK_STRUCTURE_TYPE_SWAP_CHAIN_CREATE_INFO_WSI;
diff --git a/tests/vktestframework.h b/tests/vktestframework.h
index e39698a..6e15f79 100644
--- a/tests/vktestframework.h
+++ b/tests/vktestframework.h
@@ -39,6 +39,12 @@
 #include <fstream>
 #include <list>
 
+#if defined(NDEBUG) && defined(__GNUC__)
+#define U_ASSERT_ONLY __attribute__((unused))
+#else
+#define U_ASSERT_ONLY
+#endif
+
 // Can be used by tests to record additional details / description of test
 #define TEST_DESCRIPTION(desc) RecordProperty("description", desc)
 
