diff --git a/core/replication.m b/core/replication.m
index 326762ccaed4585ae9c33ed4d53939e7af02c96e..b40ee701ea2d778629dab9fc3b48308bb1ae9257 100644
--- a/core/replication.m
+++ b/core/replication.m
@@ -437,13 +437,18 @@ static void spawner_signal_handler(int signal)
 static void
 spawner_sigchld_handler(int signo __attribute__((unused)))
 {
+	static const char waitpid_failed[] = "spawner: waitpid() failed\n";
 	do {
 		int exit_status;
 		pid_t pid = waitpid(-1, &exit_status, WNOHANG);
 		switch (pid) {
 		case -1:
-			if (errno != ECHILD)
-				write(sayfd, "spawner: waitpid() failed\n", 26);
+			if (errno != ECHILD) {
+				int r = write(sayfd, waitpid_failed,
+					      sizeof(waitpid_failed) - 1);
+				(void) r; /* -Wunused-result warning suppression */
+			}
+			return;
 		case 0: /* no more changes in children status */
 			return;
 		default:
diff --git a/core/tarantool_lua.m b/core/tarantool_lua.m
index 3c3ae76b8a55f202beed723d80ee837af89826e4..3a5dcb5b225fab23c52b1820b88a6b7ea5c4a7ff 100644
--- a/core/tarantool_lua.m
+++ b/core/tarantool_lua.m
@@ -978,7 +978,8 @@ is_string(const char *str)
 	if (! isdigit(*str))
 	    return true;
 	char *endptr;
-	(void) strtod(str, &endptr);
+	double r = strtod(str, &endptr);
+	(void) r;  /* -Wunused-result warning suppression */
 	return *endptr != '\0';
 }
 
diff --git a/mod/box/tree.m b/mod/box/tree.m
index 1b68f3854f7c34fb3f192e012280d51046e8d7b6..92096dda18ddeb6ff17aae2d9f26177fbec3c345 100644
--- a/mod/box/tree.m
+++ b/mod/box/tree.m
@@ -585,7 +585,8 @@ dense_node_compare(struct key_def *key_def, u32 first_field,
  * Compare a part for two dense keys with parts in linear order.
  */
 static int
-linear_node_compare(struct key_def *key_def, u32 first_field,
+linear_node_compare(struct key_def *key_def,
+		    u32 first_field  __attribute__((unused)),
 		    struct box_tuple *tuple_a, u32 offset_a,
 		    struct box_tuple *tuple_b, u32 offset_b)
 {
@@ -701,7 +702,8 @@ dense_key_node_compare(struct key_def *key_def,
 static int
 linear_key_node_compare(struct key_def *key_def,
 			const struct key_data *key_data,
-			u32 first_field, struct box_tuple *tuple, u32 offset)
+			u32 first_field __attribute__((unused)),
+			struct box_tuple *tuple, u32 offset)
 {
 	int part_count = key_def->part_count;
 	assert(first_field + part_count <= tuple->cardinality);
diff --git a/third_party/valgrind/valgrind.h b/third_party/valgrind/valgrind.h
index 221aa0153ab8991ca81dfdf574a187a24f402c8a..a217ecd874fb5188b020dbdba4a581d288d8e5fa 100644
--- a/third_party/valgrind/valgrind.h
+++ b/third_party/valgrind/valgrind.h
@@ -4346,7 +4346,7 @@ typedef
 #define VALGRIND_DO_CLIENT_REQUEST_EXPR(                               \
         _zzq_default, _zzq_request,                                    \
         _zzq_arg1, _zzq_arg2, _zzq_arg3, _zzq_arg4, _zzq_arg5)         \
-   (_zzq_default)
+	(void)(_zzq_default)
 
 #else /*defined(NVALGRIND)*/