diff --git a/src/image_writer.h b/src/image_writer.h
index 3c17538..cdf2d9c 100644
--- a/src/image_writer.h
+++ b/src/image_writer.h
@@ -33,7 +33,7 @@
   // we use the lock word to store the offset of the object in the image
   void AssignImageOffset(Object* object) {
     DCHECK(object != NULL);
-    DCHECK(object->monitor_ == 0);  // should be no lock
+    DCHECK_EQ(object->monitor_, 0U);  // should be no lock
     SetImageOffset(object, image_top_);
     image_top_ += RoundUp(object->SizeOf(), 8);  // 64-bit alignment
     DCHECK_LT(image_top_, image_->GetLength());
@@ -58,7 +58,7 @@
   }
   static void ResetImageOffset(Object* object) {
     DCHECK(object != NULL);
-    DCHECK(object->monitor_ != 0);  // should be an offset
+    DCHECK_NE(object->monitor_, 0U);  // should be an offset
     object->monitor_ = 0;
   }
 
diff --git a/src/java_lang_System.cc b/src/java_lang_System.cc
index 4a6e8db..d8e8a5a 100644
--- a/src/java_lang_System.cc
+++ b/src/java_lang_System.cc
@@ -54,7 +54,7 @@
 #define move32 _memmove_words
 #else
 static void move16(void* dst, const void* src, size_t n) {
-  DCHECK((((uintptr_t) dst | (uintptr_t) src | n) & 0x01) == 0);
+  DCHECK_EQ((((uintptr_t) dst | (uintptr_t) src | n) & 0x01), 0U);
 
   uint16_t* d = reinterpret_cast<uint16_t*>(dst);
   const uint16_t* s = reinterpret_cast<const uint16_t*>(src);
@@ -77,7 +77,7 @@
 }
 
 static void move32(void* dst, const void* src, size_t n) {
-  DCHECK((((uintptr_t) dst | (uintptr_t) src | n) & 0x03) == 0);
+  DCHECK_EQ((((uintptr_t) dst | (uintptr_t) src | n) & 0x03), 0U);
 
   uint32_t* d = reinterpret_cast<uint32_t*>(dst);
   const uint32_t* s = reinterpret_cast<const uint32_t*>(src);
diff --git a/src/jni_internal_test.cc b/src/jni_internal_test.cc
index 59dca3a..e1ab9db 100644
--- a/src/jni_internal_test.cc
+++ b/src/jni_internal_test.cc
@@ -338,21 +338,21 @@
   env_->set_region_fn(a, 0, size, src_buf); \
   /* Copy back only part. */ \
   env_->get_region_fn(a, 1, size - 2, &dst_buf[1]); \
-  EXPECT_FALSE(memcmp(src_buf, dst_buf, sizeof(src_buf)) == 0) << "short copy equal"; \
+  EXPECT_NE(memcmp(src_buf, dst_buf, sizeof(src_buf)), 0) << "short copy equal"; \
   /* Copy the missing pieces. */ \
   env_->get_region_fn(a, 0, 1, dst_buf); \
   env_->get_region_fn(a, size - 1, 1, &dst_buf[size - 1]); \
-  EXPECT_TRUE(memcmp(src_buf, dst_buf, sizeof(src_buf)) == 0) << "fixed copy not equal"; \
+  EXPECT_EQ(memcmp(src_buf, dst_buf, sizeof(src_buf)), 0) << "fixed copy not equal"; \
   /* Copy back the whole array. */ \
   env_->get_region_fn(a, 0, size, dst_buf); \
-  EXPECT_TRUE(memcmp(src_buf, dst_buf, sizeof(src_buf)) == 0) << "full copy not equal"; \
+  EXPECT_EQ(memcmp(src_buf, dst_buf, sizeof(src_buf)), 0) << "full copy not equal"; \
   /* GetPrimitiveArrayCritical */ \
   void* v = env_->GetPrimitiveArrayCritical(a, NULL); \
-  EXPECT_TRUE(memcmp(src_buf, v, sizeof(src_buf)) == 0) << "GetPrimitiveArrayCritical not equal"; \
+  EXPECT_EQ(memcmp(src_buf, v, sizeof(src_buf)), 0) << "GetPrimitiveArrayCritical not equal"; \
   env_->ReleasePrimitiveArrayCritical(a, v, 0); \
   /* GetXArrayElements */ \
   scalar_type* xs = env_->get_elements_fn(a, NULL); \
-  EXPECT_TRUE(memcmp(src_buf, xs, sizeof(src_buf)) == 0) << # get_elements_fn " not equal"; \
+  EXPECT_EQ(memcmp(src_buf, xs, sizeof(src_buf)), 0) << # get_elements_fn " not equal"; \
   env_->release_elements_fn(a, xs, 0); \
   EXPECT_EQ(reinterpret_cast<uintptr_t>(v), reinterpret_cast<uintptr_t>(xs))
 
diff --git a/src/mem_map.cc b/src/mem_map.cc
index 2bd7bd0..f1c85da 100644
--- a/src/mem_map.cc
+++ b/src/mem_map.cc
@@ -32,7 +32,7 @@
   char* end;
   size_t value = strtoul(str, &end, 16);
   CHECK(end != str) << "Failed to parse hexadecimal value from " << string;
-  CHECK(*end == '\0') << "Failed to parse hexadecimal value from " << string;
+  CHECK_EQ(*end, '\0') << "Failed to parse hexadecimal value from " << string;
   return value;
 }
 
@@ -155,9 +155,9 @@
 MemMap::MemMap(byte* addr, size_t length, void* base_addr, size_t base_length)
     : addr_(addr), length_(length), base_addr_(base_addr), base_length_(base_length) {
   CHECK(addr_ != NULL);
-  CHECK(length_ != 0);
+  CHECK_NE(length_, 0U);
   CHECK(base_addr_ != NULL);
-  CHECK(base_length_ != 0);
+  CHECK_NE(base_length_, 0U);
 };
 
 }  // namespace art
