Fix all warnings when building with CMake + clang

Change-Id: I987b4580f5f99584649b2b189369a0b962b0c3d4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/31721
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
diff --git a/src/ast/block_statement.h b/src/ast/block_statement.h
index 3c2a268..8fc2ce7 100644
--- a/src/ast/block_statement.h
+++ b/src/ast/block_statement.h
@@ -46,7 +46,8 @@
   /// @param index the index to insert at
   /// @param stmt the statement to insert
   void insert(size_t index, std::unique_ptr<ast::Statement> stmt) {
-    statements_.insert(statements_.begin() + index, std::move(stmt));
+    auto offset = static_cast<decltype(statements_)::difference_type>(index);
+    statements_.insert(statements_.begin() + offset, std::move(stmt));
   }
 
   /// @returns true if the block is empty
diff --git a/src/ast/type/array_type.cc b/src/ast/type/array_type.cc
index 8a497d8..9a5960a 100644
--- a/src/ast/type/array_type.cc
+++ b/src/ast/type/array_type.cc
@@ -59,8 +59,8 @@
 uint64_t ArrayType::BaseAlignment(MemoryLayout mem_layout) const {
   if (mem_layout == MemoryLayout::kUniformBuffer) {
     float aligment = 16;  // for a vec4
-    float unaligned = subtype_->BaseAlignment(mem_layout);
-    return aligment * std::ceil(unaligned / aligment);
+    float unaligned = static_cast<float>(subtype_->BaseAlignment(mem_layout));
+    return static_cast<uint64_t>(aligment * std::ceil(unaligned / aligment));
   } else if (mem_layout == MemoryLayout::kStorageBuffer) {
     return subtype_->BaseAlignment(mem_layout);
   }
diff --git a/src/ast/type/i32_type.cc b/src/ast/type/i32_type.cc
index ec1b26e..61b4990 100644
--- a/src/ast/type/i32_type.cc
+++ b/src/ast/type/i32_type.cc
@@ -30,11 +30,11 @@
   return "__i32";
 }
 
-uint64_t I32Type::MinBufferBindingSize(MemoryLayout mem_layout) const {
+uint64_t I32Type::MinBufferBindingSize(MemoryLayout) const {
   return 4;
 }
 
-uint64_t I32Type::BaseAlignment(MemoryLayout mem_layout) const {
+uint64_t I32Type::BaseAlignment(MemoryLayout) const {
   return 4;
 }
 
diff --git a/src/ast/type/struct_type.cc b/src/ast/type/struct_type.cc
index ba7a9b3..98b426c 100644
--- a/src/ast/type/struct_type.cc
+++ b/src/ast/type/struct_type.cc
@@ -59,10 +59,10 @@
     return 0;
   }
 
-  float unaligned = last_member->offset() + size;
-  float alignment = BaseAlignment(mem_layout);
+  float unaligned = static_cast<float>(last_member->offset() + size);
+  float alignment = static_cast<float>(BaseAlignment(mem_layout));
 
-  return alignment * std::ceil(unaligned / alignment);
+  return static_cast<uint64_t>(alignment * std::ceil(unaligned / alignment));
 }
 
 uint64_t StructType::BaseAlignment(MemoryLayout mem_layout) const {
@@ -75,7 +75,8 @@
 
   if (mem_layout == MemoryLayout::kUniformBuffer) {
     // Round up to a vec4.
-    return 16 * std::ceil(static_cast<float>(max) / 16.0f);
+    return static_cast<uint64_t>(16 *
+                                 std::ceil(static_cast<float>(max) / 16.0f));
   } else if (mem_layout == MemoryLayout::kStorageBuffer) {
     return max;
   }