diff --git a/src/bitops.c b/src/bitops.c
index b8fff5c67..699681bc8 100644
--- a/src/bitops.c
+++ b/src/bitops.c
@@ -306,7 +306,7 @@ int checkUnsignedBitfieldOverflow(uint64_t value, int64_t incr, uint64_t bits, i
 
 handle_wrap:
     {
-        uint64_t mask = ((int64_t)-1) << bits;
+        uint64_t mask = ((uint64_t)-1) << bits;
         uint64_t res = value+incr;
 
         res &= ~mask;
@@ -349,7 +349,7 @@ int checkSignedBitfieldOverflow(int64_t value, int64_t incr, uint64_t bits, int
 
 handle_wrap:
     {
-        uint64_t mask = ((int64_t)-1) << bits;
+        uint64_t mask = ((uint64_t)-1) << bits;
         uint64_t msb = (uint64_t)1 << (bits-1);
         uint64_t a = value, b = incr, c;
         c = a+b; /* Perform addition as unsigned so that's defined. */
diff --git a/src/rdb.c b/src/rdb.c
index f3c9c501f..6d29f80ce 100644
--- a/src/rdb.c
+++ b/src/rdb.c
@@ -736,7 +736,7 @@ ssize_t rdbSaveObject(rio *rdb, robj *o) {
 
         /* Then write the module-specific representation. */
         mt->rdb_save(&io,mv->value);
-        return io.error ? -1 : io.bytes;
+        return io.error ? -1 : (ssize_t)io.bytes;
     } else {
         serverPanic("Unknown object type");
     }
diff --git a/src/redis-check-rdb.c b/src/redis-check-rdb.c
index 1e34a62c3..0723d2af4 100644
--- a/src/redis-check-rdb.c
+++ b/src/redis-check-rdb.c
@@ -275,7 +275,8 @@ static char* loadStringObject() {
             return loadLzfStringObject();
         default:
             /* unknown encoding */
-            SHIFT_ERROR(offset, "Unknown string encoding (0x%02llx)", len);
+            SHIFT_ERROR(offset, "Unknown string encoding (0x%02llx)",
+                (unsigned long long) len);
             return NULL;
         }
     }
@@ -390,7 +391,8 @@ static int loadPair(entry *e) {
         for (i = 0; i < length; i++) {
             offset = CURR_OFFSET;
             if (!processStringObject(NULL)) {
-                SHIFT_ERROR(offset, "Error reading element at index %llu (length: %llu)", i, length);
+                SHIFT_ERROR(offset, "Error reading element at index %llu (length: %llu)",
+                    (unsigned long long) i, (unsigned long long) length);
                 return 0;
             }
         }
@@ -399,12 +401,14 @@ static int loadPair(entry *e) {
         for (i = 0; i < length; i++) {
             offset = CURR_OFFSET;
             if (!processStringObject(NULL)) {
-                SHIFT_ERROR(offset, "Error reading element key at index %llu (length: %llu)", i, length);
+                SHIFT_ERROR(offset, "Error reading element key at index %llu (length: %llu)",
+                    (unsigned long long) i, (unsigned long long) length);
                 return 0;
             }
             offset = CURR_OFFSET;
             if (!processDoubleValue(NULL)) {
-                SHIFT_ERROR(offset, "Error reading element value at index %llu (length: %llu)", i, length);
+                SHIFT_ERROR(offset, "Error reading element value at index %llu (length: %llu)",
+                    (unsigned long long) i, (unsigned long long) length);
                 return 0;
             }
         }
@@ -413,12 +417,14 @@ static int loadPair(entry *e) {
         for (i = 0; i < length; i++) {
             offset = CURR_OFFSET;
             if (!processStringObject(NULL)) {
-                SHIFT_ERROR(offset, "Error reading element key at index %llu (length: %llu)", i, length);
+                SHIFT_ERROR(offset, "Error reading element key at index %llu (length: %llu)",
+                    (unsigned long long) i, (unsigned long long) length);
                 return 0;
             }
             offset = CURR_OFFSET;
             if (!processStringObject(NULL)) {
-                SHIFT_ERROR(offset, "Error reading element value at index %llu (length: %llu)", i, length);
+                SHIFT_ERROR(offset, "Error reading element value at index %llu (length: %llu)",
+                    (unsigned long long) i, (unsigned long long) length);
                 return 0;
             }
         }
@@ -451,7 +457,8 @@ static entry loadEntry() {
             return e;
         }
         if (length > 63) {
-            SHIFT_ERROR(offset[1], "Database number out of range (%llu)", length);
+            SHIFT_ERROR(offset[1], "Database number out of range (%llu)",
+                (unsigned long long) length);
             return e;
         }
     } else if (e.type == RDB_OPCODE_EOF) {