Fix compilation with stdlibc++ (instead of libc++)

Also fixes some warnings when compiling with GCC

Bug: dawn:333
Change-Id: Ib597bb3b950476279a1e20e3556765ec9f1db697
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15960
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/generator/templates/dawn_wire/client/ApiProcs.cpp b/generator/templates/dawn_wire/client/ApiProcs.cpp
index 121e983..1659cdf 100644
--- a/generator/templates/dawn_wire/client/ApiProcs.cpp
+++ b/generator/templates/dawn_wire/client/ApiProcs.cpp
@@ -17,6 +17,7 @@
 #include "dawn_wire/client/Client.h"
 
 #include <algorithm>
+#include <cstring>
 #include <string>
 #include <vector>
 
diff --git a/src/dawn_native/Buffer.cpp b/src/dawn_native/Buffer.cpp
index e387240..5e173f3 100644
--- a/src/dawn_native/Buffer.cpp
+++ b/src/dawn_native/Buffer.cpp
@@ -192,6 +192,8 @@
                 return DAWN_VALIDATION_ERROR("Buffer used in a submit while mapped");
             case BufferState::Unmapped:
                 return {};
+            default:
+                UNREACHABLE();
         }
     }
 
@@ -444,6 +446,8 @@
                 return {};
             case BufferState::Destroyed:
                 return DAWN_VALIDATION_ERROR("Buffer is destroyed");
+            default:
+                UNREACHABLE();
         }
     }
 
diff --git a/src/dawn_native/CommandEncoder.cpp b/src/dawn_native/CommandEncoder.cpp
index 5185d1b..9cdd4a7 100644
--- a/src/dawn_native/CommandEncoder.cpp
+++ b/src/dawn_native/CommandEncoder.cpp
@@ -30,6 +30,7 @@
 #include "dawn_platform/DawnPlatform.h"
 #include "dawn_platform/tracing/TraceEvent.h"
 
+#include <cmath>
 #include <map>
 
 namespace dawn_native {
diff --git a/src/dawn_native/DawnNative.cpp b/src/dawn_native/DawnNative.cpp
index dc95bc1..b39b9f2 100644
--- a/src/dawn_native/DawnNative.cpp
+++ b/src/dawn_native/DawnNative.cpp
@@ -64,10 +64,8 @@
                 return BackendType::OpenGL;
             case wgpu::BackendType::Vulkan:
                 return BackendType::Vulkan;
-
             default:
                 UNREACHABLE();
-                return BackendType::Null;
         }
     }
 
@@ -81,6 +79,8 @@
                 return DeviceType::CPU;
             case wgpu::AdapterType::Unknown:
                 return DeviceType::Unknown;
+            default:
+                UNREACHABLE();
         }
     }
 
diff --git a/src/dawn_native/ErrorData.h b/src/dawn_native/ErrorData.h
index 5d74d36..52769b4 100644
--- a/src/dawn_native/ErrorData.h
+++ b/src/dawn_native/ErrorData.h
@@ -16,6 +16,7 @@
 #define DAWNNATIVE_ERRORDATA_H_
 
 #include <cstdint>
+#include <memory>
 #include <string>
 #include <vector>
 
diff --git a/src/dawn_native/RefCounted.cpp b/src/dawn_native/RefCounted.cpp
index 9b4c1c2..a0e50b8 100644
--- a/src/dawn_native/RefCounted.cpp
+++ b/src/dawn_native/RefCounted.cpp
@@ -16,6 +16,8 @@
 
 #include "common/Assert.h"
 
+#include <cstddef>
+
 namespace dawn_native {
 
     static constexpr size_t kPayloadBits = 1;
diff --git a/src/dawn_native/RenderPipeline.cpp b/src/dawn_native/RenderPipeline.cpp
index ee28fcf..dc4a508 100644
--- a/src/dawn_native/RenderPipeline.cpp
+++ b/src/dawn_native/RenderPipeline.cpp
@@ -20,6 +20,8 @@
 #include "dawn_native/Device.h"
 #include "dawn_native/ValidationUtils_autogen.h"
 
+#include <cmath>
+
 namespace dawn_native {
     // Helper functions
     namespace {
diff --git a/src/dawn_native/vulkan/RenderPipelineVk.cpp b/src/dawn_native/vulkan/RenderPipelineVk.cpp
index b0ba4fd..88447fb 100644
--- a/src/dawn_native/vulkan/RenderPipelineVk.cpp
+++ b/src/dawn_native/vulkan/RenderPipelineVk.cpp
@@ -144,6 +144,8 @@
                     return VK_FRONT_FACE_COUNTER_CLOCKWISE;
                 case wgpu::FrontFace::CW:
                     return VK_FRONT_FACE_CLOCKWISE;
+                default:
+                    UNREACHABLE();
             }
         }
 
@@ -155,6 +157,8 @@
                     return VK_CULL_MODE_FRONT_BIT;
                 case wgpu::CullMode::Back:
                     return VK_CULL_MODE_BACK_BIT;
+                default:
+                    UNREACHABLE();
             }
         }