diff --git a/src/IceTypes.cpp b/src/IceTypes.cpp
index 29ff4de..11ac5b7 100644
--- a/src/IceTypes.cpp
+++ b/src/IceTypes.cpp
@@ -18,61 +18,61 @@
 
 namespace {
 
-// Dummy function to make sure the two type tables have the same
-// enumerated types.
-void __attribute__((unused)) xIceTypeMacroIntegrityCheck() {
+// Show tags match between ICETYPE_TABLE and ICETYPE_PROPS_TABLE.
 
-  // Show tags match between ICETYPE_TABLE and ICETYPE_PROPS_TABLE.
-
-  // Define a temporary set of enum values based on ICETYPE_TABLE
-  enum {
+// Define a temporary set of enum values based on ICETYPE_TABLE
+enum {
 #define X(tag, size, align, elts, elty, str) _table_tag_##tag,
-    ICETYPE_TABLE
+  ICETYPE_TABLE
 #undef X
-        _enum_table_tag_Names
-  };
-  // Define a temporary set of enum values based on ICETYPE_PROPS_TABLE
-  enum {
+      _enum_table_tag_Names
+};
+// Define a temporary set of enum values based on ICETYPE_PROPS_TABLE
+enum {
 #define X(tag, IsVec, IsInt, IsFloat, IsIntArith, IsLoadStore, CompareResult)  \
   _props_table_tag_##tag,
-    ICETYPE_PROPS_TABLE
+  ICETYPE_PROPS_TABLE
 #undef X
-        _enum_props_table_tag_Names
-  };
+      _enum_props_table_tag_Names
+};
 // Assert that tags in ICETYPE_TABLE are also in ICETYPE_PROPS_TABLE.
 #define X(tag, size, align, elts, elty, str)                                   \
-  STATIC_ASSERT((unsigned)_table_tag_##tag == (unsigned)_props_table_tag_##tag);
-  ICETYPE_TABLE;
+  static_assert(                                                               \
+      (unsigned)_table_tag_##tag == (unsigned)_props_table_tag_##tag,          \
+      "Inconsistency between ICETYPE_PROPS_TABLE and ICETYPE_TABLE");
+ICETYPE_TABLE;
 #undef X
 // Assert that tags in ICETYPE_PROPS_TABLE is in ICETYPE_TABLE.
 #define X(tag, IsVec, IsInt, IsFloat, IsIntArith, IsLoadStore, CompareResult)  \
-  STATIC_ASSERT((unsigned)_table_tag_##tag == (unsigned)_props_table_tag_##tag);
-  ICETYPE_PROPS_TABLE
+  static_assert(                                                               \
+      (unsigned)_table_tag_##tag == (unsigned)_props_table_tag_##tag,          \
+      "Inconsistency between ICETYPE_PROPS_TABLE and ICETYPE_TABLE");
+ICETYPE_PROPS_TABLE
 #undef X
 
-  // Show vector definitions match in ICETYPE_TABLE and
-  // ICETYPE_PROPS_TABLE.
+// Show vector definitions match in ICETYPE_TABLE and
+// ICETYPE_PROPS_TABLE.
 
-  // Define constants for each element size in ICETYPE_TABLE.
-  enum {
+// Define constants for each element size in ICETYPE_TABLE.
+enum {
 #define X(tag, size, align, elts, elty, str) _table_elts_##tag = elts,
-    ICETYPE_TABLE
+  ICETYPE_TABLE
 #undef X
-        _enum_table_elts_Elements = 0
-  };
-  // Define constants for boolean flag if vector in ICETYPE_PROPS_TABLE.
-  enum {
+      _enum_table_elts_Elements = 0
+};
+// Define constants for boolean flag if vector in ICETYPE_PROPS_TABLE.
+enum {
 #define X(tag, IsVec, IsInt, IsFloat, IsIntArith, IsLoadStore, CompareResult)  \
   _props_table_IsVec_##tag = IsVec,
-    ICETYPE_PROPS_TABLE
+  ICETYPE_PROPS_TABLE
 #undef X
-  };
+};
 // Verify that the number of vector elements is consistent with IsVec.
 #define X(tag, IsVec, IsInt, IsFloat, IsIntArith, IsLoadStore, CompareResult)  \
-  STATIC_ASSERT((_table_elts_##tag > 1) == _props_table_IsVec_##tag);
-  ICETYPE_PROPS_TABLE;
+  static_assert((_table_elts_##tag > 1) == _props_table_IsVec_##tag,           \
+                "Inconsistent vector specification in ICETYPE_PROPS_TABLE");
+ICETYPE_PROPS_TABLE;
 #undef X
-}
 
 struct TypeAttributeFields {
   size_t TypeWidthInBytes;
@@ -86,7 +86,7 @@
 #define X(tag, size, align, elts, elty, str)                                   \
   { size, align, elts, elty, str }                                             \
   ,
-    ICETYPE_TABLE
+  ICETYPE_TABLE
 #undef X
 };
 
@@ -110,7 +110,7 @@
         IsFloat && !IsVec, IsFloat && IsVec, IsLoadStore, CompareResult        \
   }                                                                            \
   ,
-    ICETYPE_PROPS_TABLE
+  ICETYPE_PROPS_TABLE
 #undef X
 };
 
