More explicit pointer type conversion
diff --git a/src/core/ext/filters/client_channel/channel_connectivity.c b/src/core/ext/filters/client_channel/channel_connectivity.c
index 0a9e90d..e5f6fa7 100644
--- a/src/core/ext/filters/client_channel/channel_connectivity.c
+++ b/src/core/ext/filters/client_channel/channel_connectivity.c
@@ -87,7 +87,7 @@
 static void finished_completion(grpc_exec_ctx *exec_ctx, void *pw,
                                 grpc_cq_completion *ignored) {
   int delete = 0;
-  state_watcher *w = pw;
+  state_watcher *w = (state_watcher *)pw;
   gpr_mu_lock(&w->mu);
   switch (w->phase) {
     case WAITING:
@@ -203,7 +203,7 @@
   grpc_channel_element *client_channel_elem =
       grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  state_watcher *w = gpr_malloc(sizeof(*w));
+  state_watcher *w = (state_watcher *)gpr_malloc(sizeof(*w));
 
   GRPC_API_TRACE(
       "grpc_channel_watch_connectivity_state("
@@ -228,7 +228,8 @@
   w->channel = channel;
   w->error = NULL;
 
-  watcher_timer_init_arg *wa = gpr_malloc(sizeof(watcher_timer_init_arg));
+  watcher_timer_init_arg *wa =
+      (watcher_timer_init_arg *)gpr_malloc(sizeof(watcher_timer_init_arg));
   wa->w = w;
   wa->deadline = deadline;
   GRPC_CLOSURE_INIT(&w->watcher_timer_init, watcher_timer_init, wa,
diff --git a/src/core/ext/filters/client_channel/client_channel.c b/src/core/ext/filters/client_channel/client_channel.c
index c24e52e..dad5c4f 100644
--- a/src/core/ext/filters/client_channel/client_channel.c
+++ b/src/core/ext/filters/client_channel/client_channel.c
@@ -148,7 +148,8 @@
       if (!parse_timeout(field, &timeout)) return NULL;
     }
   }
-  method_parameters *value = gpr_malloc(sizeof(method_parameters));
+  method_parameters *value =
+      (method_parameters *)gpr_malloc(sizeof(method_parameters));
   gpr_ref_init(&value->refs, 1);
   value->timeout = timeout;
   value->wait_for_ready = wait_for_ready;
@@ -254,7 +255,7 @@
 
 static void on_lb_policy_state_changed_locked(grpc_exec_ctx *exec_ctx,
                                               void *arg, grpc_error *error) {
-  lb_policy_connectivity_watcher *w = arg;
+  lb_policy_connectivity_watcher *w = (lb_policy_connectivity_watcher *)arg;
   grpc_connectivity_state publish_state = w->state;
   /* check if the notification is for the latest policy */
   if (w->lb_policy == w->chand->lb_policy) {
@@ -281,7 +282,8 @@
 static void watch_lb_policy_locked(grpc_exec_ctx *exec_ctx, channel_data *chand,
                                    grpc_lb_policy *lb_policy,
                                    grpc_connectivity_state current_state) {
-  lb_policy_connectivity_watcher *w = gpr_malloc(sizeof(*w));
+  lb_policy_connectivity_watcher *w =
+      (lb_policy_connectivity_watcher *)gpr_malloc(sizeof(*w));
   GRPC_CHANNEL_STACK_REF(chand->owning_stack, "watch_lb_policy");
   w->chand = chand;
   GRPC_CLOSURE_INIT(&w->on_changed, on_lb_policy_state_changed_locked, w,
@@ -310,7 +312,8 @@
 } service_config_parsing_state;
 
 static void parse_retry_throttle_params(const grpc_json *field, void *arg) {
-  service_config_parsing_state *parsing_state = arg;
+  service_config_parsing_state *parsing_state =
+      (service_config_parsing_state *)arg;
   if (strcmp(field->key, "retryThrottling") == 0) {
     if (parsing_state->retry_throttle_data != NULL) return;  // Duplicate.
     if (field->type != GRPC_JSON_OBJECT) return;
@@ -365,7 +368,7 @@
 
 static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
                                               void *arg, grpc_error *error) {
-  channel_data *chand = arg;
+  channel_data *chand = (channel_data *)arg;
   if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
     gpr_log(GPR_DEBUG, "chand=%p: got resolver result: error=%s", chand,
             grpc_error_string(error));
@@ -391,7 +394,8 @@
     channel_arg =
         grpc_channel_args_find(chand->resolver_result, GRPC_ARG_LB_ADDRESSES);
     if (channel_arg != NULL && channel_arg->type == GRPC_ARG_POINTER) {
-      grpc_lb_addresses *addresses = channel_arg->value.pointer.p;
+      grpc_lb_addresses *addresses =
+          (grpc_lb_addresses *)channel_arg->value.pointer.p;
       bool found_balancer_address = false;
       for (size_t i = 0; i < addresses->num_addresses; ++i) {
         if (addresses->addresses[i].is_balancer) {
@@ -586,9 +590,10 @@
 
 static void start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                       grpc_error *error_ignored) {
-  grpc_transport_op *op = arg;
-  grpc_channel_element *elem = op->handler_private.extra_arg;
-  channel_data *chand = elem->channel_data;
+  grpc_transport_op *op = (grpc_transport_op *)arg;
+  grpc_channel_element *elem =
+      (grpc_channel_element *)op->handler_private.extra_arg;
+  channel_data *chand = (channel_data *)elem->channel_data;
 
   if (op->on_connectivity_state_change != NULL) {
     grpc_connectivity_state_notify_on_state_change(
@@ -642,7 +647,7 @@
 static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
                                   grpc_channel_element *elem,
                                   grpc_transport_op *op) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
 
   GPR_ASSERT(op->set_accept_stream == false);
   if (op->bind_pollset != NULL) {
@@ -662,7 +667,7 @@
 static void cc_get_channel_info(grpc_exec_ctx *exec_ctx,
                                 grpc_channel_element *elem,
                                 const grpc_channel_info *info) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   gpr_mu_lock(&chand->info_mu);
   if (info->lb_policy_name != NULL) {
     *info->lb_policy_name = chand->info_lb_policy_name == NULL
@@ -682,7 +687,7 @@
 static grpc_error *cc_init_channel_elem(grpc_exec_ctx *exec_ctx,
                                         grpc_channel_element *elem,
                                         grpc_channel_element_args *args) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   GPR_ASSERT(args->is_last);
   GPR_ASSERT(elem->filter == &grpc_client_channel_filter);
   // Initialize data members.
@@ -713,7 +718,8 @@
         "client channel factory arg must be a pointer");
   }
   grpc_client_channel_factory_ref(arg->value.pointer.p);
-  chand->client_channel_factory = arg->value.pointer.p;
+  chand->client_channel_factory =
+      (grpc_client_channel_factory *)arg->value.pointer.p;
   // Get server name to resolve, using proxy mapper if needed.
   arg = grpc_channel_args_find(args->channel_args, GRPC_ARG_SERVER_URI);
   if (arg == NULL) {
@@ -745,7 +751,7 @@
 
 static void shutdown_resolver_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                      grpc_error *error) {
-  grpc_resolver *resolver = arg;
+  grpc_resolver *resolver = (grpc_resolver *)arg;
   grpc_resolver_shutdown_locked(exec_ctx, resolver);
   GRPC_RESOLVER_UNREF(exec_ctx, resolver, "channel");
 }
@@ -753,7 +759,7 @@
 /* Destructor for channel_data */
 static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx,
                                     grpc_channel_element *elem) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   if (chand->resolver != NULL) {
     GRPC_CLOSURE_SCHED(
         exec_ctx, GRPC_CLOSURE_CREATE(shutdown_resolver_locked, chand->resolver,
@@ -848,7 +854,7 @@
 
 grpc_subchannel_call *grpc_client_channel_get_subchannel_call(
     grpc_call_element *elem) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   return calld->subchannel_call;
 }
 
@@ -868,7 +874,7 @@
 // This is called via the call combiner, so access to calld is synchronized.
 static void fail_pending_batch_in_call_combiner(grpc_exec_ctx *exec_ctx,
                                                 void *arg, grpc_error *error) {
-  call_data *calld = arg;
+  call_data *calld = (call_data *)arg;
   if (calld->waiting_for_pick_batches_count > 0) {
     --calld->waiting_for_pick_batches_count;
     grpc_transport_stream_op_batch_finish_with_failure(
@@ -882,7 +888,7 @@
 static void waiting_for_pick_batches_fail(grpc_exec_ctx *exec_ctx,
                                           grpc_call_element *elem,
                                           grpc_error *error) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
     gpr_log(GPR_DEBUG,
             "chand=%p calld=%p: failing %" PRIdPTR " pending batches: %s",
@@ -912,7 +918,7 @@
 // This is called via the call combiner, so access to calld is synchronized.
 static void run_pending_batch_in_call_combiner(grpc_exec_ctx *exec_ctx,
                                                void *arg, grpc_error *ignored) {
-  call_data *calld = arg;
+  call_data *calld = (call_data *)arg;
   if (calld->waiting_for_pick_batches_count > 0) {
     --calld->waiting_for_pick_batches_count;
     grpc_subchannel_call_process_op(
@@ -924,8 +930,8 @@
 // This is called via the call combiner, so access to calld is synchronized.
 static void waiting_for_pick_batches_resume(grpc_exec_ctx *exec_ctx,
                                             grpc_call_element *elem) {
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
     gpr_log(GPR_DEBUG, "chand=%p calld=%p: sending %" PRIdPTR
                        " pending batches to subchannel_call=%p",
@@ -950,8 +956,8 @@
 // that the resolver has returned results to the channel.
 static void apply_service_config_to_call_locked(grpc_exec_ctx *exec_ctx,
                                                 grpc_call_element *elem) {
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
     gpr_log(GPR_DEBUG, "chand=%p calld=%p: applying service config to call",
             chand, calld);
@@ -961,7 +967,7 @@
         grpc_server_retry_throttle_data_ref(chand->retry_throttle_data);
   }
   if (chand->method_params_table != NULL) {
-    calld->method_params = grpc_method_config_table_get(
+    calld->method_params = (method_parameters *)grpc_method_config_table_get(
         exec_ctx, chand->method_params_table, calld->path);
     if (calld->method_params != NULL) {
       method_parameters_ref(calld->method_params);
@@ -984,8 +990,8 @@
 static void create_subchannel_call_locked(grpc_exec_ctx *exec_ctx,
                                           grpc_call_element *elem,
                                           grpc_error *error) {
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   const grpc_connected_subchannel_call_args call_args = {
       .pollent = calld->pollent,
       .path = calld->path,
@@ -1013,8 +1019,8 @@
 static void subchannel_ready_locked(grpc_exec_ctx *exec_ctx,
                                     grpc_call_element *elem,
                                     grpc_error *error) {
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   grpc_polling_entity_del_from_pollset_set(exec_ctx, calld->pollent,
                                            chand->interested_parties);
   if (calld->connected_subchannel == NULL) {
@@ -1057,15 +1063,16 @@
 static void pick_after_resolver_result_cancel_locked(grpc_exec_ctx *exec_ctx,
                                                      void *arg,
                                                      grpc_error *error) {
-  pick_after_resolver_result_args *args = arg;
+  pick_after_resolver_result_args *args =
+      (pick_after_resolver_result_args *)arg;
   if (args->finished) {
     gpr_free(args);
     return;
   }
   args->finished = true;
   grpc_call_element *elem = args->elem;
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   // If we don't yet have a resolver result, then a closure for
   // pick_after_resolver_result_done_locked() will have been added to
   // chand->waiting_for_resolver_result_closures, and it may not be invoked
@@ -1091,7 +1098,8 @@
 static void pick_after_resolver_result_done_locked(grpc_exec_ctx *exec_ctx,
                                                    void *arg,
                                                    grpc_error *error) {
-  pick_after_resolver_result_args *args = arg;
+  pick_after_resolver_result_args *args =
+      (pick_after_resolver_result_args *)arg;
   if (args->finished) {
     /* cancelled, do nothing */
     if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
@@ -1102,8 +1110,8 @@
   }
   args->finished = true;
   grpc_call_element *elem = args->elem;
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (error != GRPC_ERROR_NONE) {
     if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
       gpr_log(GPR_DEBUG, "chand=%p calld=%p: resolver failed to return data",
@@ -1123,8 +1131,8 @@
 
 static void pick_after_resolver_result_start_locked(grpc_exec_ctx *exec_ctx,
                                                     grpc_call_element *elem) {
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
     gpr_log(GPR_DEBUG,
             "chand=%p calld=%p: deferring pick pending resolver result", chand,
@@ -1148,9 +1156,9 @@
 // holding the call combiner.
 static void pick_callback_cancel_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                         grpc_error *error) {
-  grpc_call_element *elem = arg;
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)arg;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (error != GRPC_ERROR_NONE && calld->lb_policy != NULL) {
     if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
       gpr_log(GPR_DEBUG, "chand=%p calld=%p: cancelling pick from LB policy %p",
@@ -1167,9 +1175,9 @@
 // Unrefs the LB policy and invokes subchannel_ready_locked().
 static void pick_callback_done_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                       grpc_error *error) {
-  grpc_call_element *elem = arg;
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)arg;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
     gpr_log(GPR_DEBUG, "chand=%p calld=%p: pick completed asynchronously",
             chand, calld);
@@ -1186,8 +1194,8 @@
 static bool pick_callback_start_locked(grpc_exec_ctx *exec_ctx,
                                        grpc_call_element *elem,
                                        const grpc_lb_policy_pick_args *inputs) {
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (GRPC_TRACER_ON(grpc_client_channel_trace)) {
     gpr_log(GPR_DEBUG, "chand=%p calld=%p: starting pick on lb_policy=%p",
             chand, calld, chand->lb_policy);
@@ -1222,8 +1230,8 @@
 static bool pick_subchannel_locked(grpc_exec_ctx *exec_ctx,
                                    grpc_call_element *elem) {
   GPR_TIMER_BEGIN("pick_subchannel", 0);
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   bool pick_done = false;
   if (chand->lb_policy != NULL) {
     apply_service_config_to_call_locked(exec_ctx, elem);
@@ -1295,8 +1303,8 @@
 }
 
 static void on_complete(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_call_element *elem = arg;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)arg;
+  call_data *calld = (call_data *)elem->call_data;
   if (calld->retry_throttle_data != NULL) {
     if (error == GRPC_ERROR_NONE) {
       grpc_server_retry_throttle_data_record_success(
@@ -1317,8 +1325,8 @@
 static void cc_start_transport_stream_op_batch(
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_transport_stream_op_batch *batch) {
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   if (chand->deadline_checking_enabled) {
     grpc_deadline_state_client_start_transport_stream_op_batch(exec_ctx, elem,
                                                                batch);
@@ -1411,8 +1419,8 @@
 static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
                                      grpc_call_element *elem,
                                      const grpc_call_element_args *args) {
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   // Initialize data members.
   calld->path = grpc_slice_ref_internal(args->path);
   calld->call_start_time = args->start_time;
@@ -1432,8 +1440,8 @@
                                  grpc_call_element *elem,
                                  const grpc_call_final_info *final_info,
                                  grpc_closure *then_schedule_closure) {
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   if (chand->deadline_checking_enabled) {
     grpc_deadline_state_destroy(exec_ctx, elem);
   }
@@ -1467,7 +1475,7 @@
 static void cc_set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx,
                                           grpc_call_element *elem,
                                           grpc_polling_entity *pollent) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   calld->pollent = pollent;
 }
 
@@ -1491,7 +1499,7 @@
 
 static void try_to_connect_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                   grpc_error *error_ignored) {
-  channel_data *chand = arg;
+  channel_data *chand = (channel_data *)arg;
   if (chand->lb_policy != NULL) {
     grpc_lb_policy_exit_idle_locked(exec_ctx, chand->lb_policy);
   } else {
@@ -1505,7 +1513,7 @@
 
 grpc_connectivity_state grpc_client_channel_check_connectivity_state(
     grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, int try_to_connect) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   grpc_connectivity_state out =
       grpc_connectivity_state_check(&chand->state_tracker);
   if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
@@ -1576,7 +1584,7 @@
 
 int grpc_client_channel_num_external_connectivity_watchers(
     grpc_channel_element *elem) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   int count = 0;
 
   gpr_mu_lock(&chand->external_connectivity_watcher_list_mu);
@@ -1593,7 +1601,7 @@
 
 static void on_external_watch_complete(grpc_exec_ctx *exec_ctx, void *arg,
                                        grpc_error *error) {
-  external_connectivity_watcher *w = arg;
+  external_connectivity_watcher *w = (external_connectivity_watcher *)arg;
   grpc_closure *follow_up = w->on_complete;
   grpc_polling_entity_del_from_pollset_set(exec_ctx, &w->pollent,
                                            w->chand->interested_parties);
@@ -1606,7 +1614,7 @@
 
 static void watch_connectivity_state_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                             grpc_error *error_ignored) {
-  external_connectivity_watcher *w = arg;
+  external_connectivity_watcher *w = (external_connectivity_watcher *)arg;
   external_connectivity_watcher *found = NULL;
   if (w->state != NULL) {
     external_connectivity_watcher_list_append(w->chand, w);
@@ -1635,8 +1643,9 @@
     grpc_exec_ctx *exec_ctx, grpc_channel_element *elem,
     grpc_polling_entity pollent, grpc_connectivity_state *state,
     grpc_closure *closure, grpc_closure *watcher_timer_init) {
-  channel_data *chand = elem->channel_data;
-  external_connectivity_watcher *w = gpr_zalloc(sizeof(*w));
+  channel_data *chand = (channel_data *)elem->channel_data;
+  external_connectivity_watcher *w =
+      (external_connectivity_watcher *)gpr_zalloc(sizeof(*w));
   w->chand = chand;
   w->pollent = pollent;
   w->on_complete = closure;
diff --git a/src/core/ext/filters/client_channel/http_connect_handshaker.c b/src/core/ext/filters/client_channel/http_connect_handshaker.c
index 0952dc6..d4c3bc0 100644
--- a/src/core/ext/filters/client_channel/http_connect_handshaker.c
+++ b/src/core/ext/filters/client_channel/http_connect_handshaker.c
@@ -124,7 +124,7 @@
 // Callback invoked when finished writing HTTP CONNECT request.
 static void on_write_done(grpc_exec_ctx* exec_ctx, void* arg,
                           grpc_error* error) {
-  http_connect_handshaker* handshaker = arg;
+  http_connect_handshaker* handshaker = (http_connect_handshaker*)arg;
   gpr_mu_lock(&handshaker->mu);
   if (error != GRPC_ERROR_NONE || handshaker->shutdown) {
     // If the write failed or we're shutting down, clean up and invoke the
@@ -145,7 +145,7 @@
 // Callback invoked for reading HTTP CONNECT response.
 static void on_read_done(grpc_exec_ctx* exec_ctx, void* arg,
                          grpc_error* error) {
-  http_connect_handshaker* handshaker = arg;
+  http_connect_handshaker* handshaker = (http_connect_handshaker*)arg;
   gpr_mu_lock(&handshaker->mu);
   if (error != GRPC_ERROR_NONE || handshaker->shutdown) {
     // If the read failed or we're shutting down, clean up and invoke the
@@ -281,7 +281,8 @@
     GPR_ASSERT(arg->type == GRPC_ARG_STRING);
     gpr_string_split(arg->value.string, "\n", &header_strings,
                      &num_header_strings);
-    headers = gpr_malloc(sizeof(grpc_http_header) * num_header_strings);
+    headers = (grpc_http_header*)gpr_malloc(sizeof(grpc_http_header) *
+                                            num_header_strings);
     for (size_t i = 0; i < num_header_strings; ++i) {
       char* sep = strchr(header_strings[i], ':');
       if (sep == NULL) {
@@ -333,7 +334,8 @@
     http_connect_handshaker_do_handshake};
 
 static grpc_handshaker* grpc_http_connect_handshaker_create() {
-  http_connect_handshaker* handshaker = gpr_malloc(sizeof(*handshaker));
+  http_connect_handshaker* handshaker =
+      (http_connect_handshaker*)gpr_malloc(sizeof(*handshaker));
   memset(handshaker, 0, sizeof(*handshaker));
   grpc_handshaker_init(&http_connect_handshaker_vtable, &handshaker->base);
   gpr_mu_init(&handshaker->mu);
diff --git a/src/core/ext/filters/client_channel/lb_policy.c b/src/core/ext/filters/client_channel/lb_policy.c
index dd95a13..8e6673d 100644
--- a/src/core/ext/filters/client_channel/lb_policy.c
+++ b/src/core/ext/filters/client_channel/lb_policy.c
@@ -67,7 +67,7 @@
 
 static void shutdown_locked(grpc_exec_ctx *exec_ctx, void *arg,
                             grpc_error *error) {
-  grpc_lb_policy *policy = arg;
+  grpc_lb_policy *policy = (grpc_lb_policy *)arg;
   policy->vtable->shutdown_locked(exec_ctx, policy);
   GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, policy, "strong-unref");
 }
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
index 299f26b..bd29046 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c
@@ -49,7 +49,7 @@
 
 static void on_complete_for_send(grpc_exec_ctx *exec_ctx, void *arg,
                                  grpc_error *error) {
-  call_data *calld = arg;
+  call_data *calld = (call_data *)arg;
   if (error == GRPC_ERROR_NONE) {
     calld->send_initial_metadata_succeeded = true;
   }
@@ -59,7 +59,7 @@
 
 static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx, void *arg,
                                         grpc_error *error) {
-  call_data *calld = arg;
+  call_data *calld = (call_data *)arg;
   if (error == GRPC_ERROR_NONE) {
     calld->recv_initial_metadata_succeeded = true;
   }
@@ -70,7 +70,7 @@
 static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
                                   grpc_call_element *elem,
                                   const grpc_call_element_args *args) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   // Get stats object from context and take a ref.
   GPR_ASSERT(args->context != NULL);
   GPR_ASSERT(args->context[GRPC_GRPCLB_CLIENT_STATS].value != NULL);
@@ -84,7 +84,7 @@
 static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                               const grpc_call_final_info *final_info,
                               grpc_closure *ignored) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   // Record call finished, optionally setting client_failed_to_send and
   // received.
   grpc_grpclb_client_stats_add_call_finished(
@@ -98,7 +98,7 @@
 static void start_transport_stream_op_batch(
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_transport_stream_op_batch *batch) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   GPR_TIMER_BEGIN("clr_start_transport_stream_op_batch", 0);
   // Intercept send_initial_metadata.
   if (batch->send_initial_metadata) {
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
index 087b407..5aafed1 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c
@@ -181,7 +181,7 @@
  * order to unref the round robin instance upon its invocation */
 static void wrapped_rr_closure(grpc_exec_ctx *exec_ctx, void *arg,
                                grpc_error *error) {
-  wrapped_rr_closure_arg *wc_arg = arg;
+  wrapped_rr_closure_arg *wc_arg = (wrapped_rr_closure_arg *)arg;
 
   GPR_ASSERT(wc_arg->wrapped_closure != NULL);
   GRPC_CLOSURE_SCHED(exec_ctx, wc_arg->wrapped_closure, GRPC_ERROR_REF(error));
@@ -245,7 +245,7 @@
                              grpc_connected_subchannel **target,
                              grpc_call_context_element *context,
                              grpc_closure *on_complete) {
-  pending_pick *pp = gpr_zalloc(sizeof(*pp));
+  pending_pick *pp = (pending_pick *)gpr_zalloc(sizeof(*pp));
   pp->next = *root;
   pp->pick_args = *pick_args;
   pp->target = target;
@@ -271,7 +271,7 @@
 } pending_ping;
 
 static void add_pending_ping(pending_ping **root, grpc_closure *notify) {
-  pending_ping *pping = gpr_zalloc(sizeof(*pping));
+  pending_ping *pping = (pending_ping *)gpr_zalloc(sizeof(*pping));
   pping->wrapped_notify_arg.wrapped_closure = notify;
   pping->wrapped_notify_arg.free_when_done = pping;
   pping->next = *root;
@@ -671,7 +671,7 @@
   grpc_lb_addresses *addresses =
       process_serverlist_locked(exec_ctx, glb_policy->serverlist);
   GPR_ASSERT(addresses != NULL);
-  grpc_lb_policy_args *args = gpr_zalloc(sizeof(*args));
+  grpc_lb_policy_args *args = (grpc_lb_policy_args *)gpr_zalloc(sizeof(*args));
   args->client_channel_factory = glb_policy->cc_factory;
   args->combiner = glb_policy->base.combiner;
   // Replace the LB addresses in the channel args that we pass down to
@@ -798,7 +798,7 @@
 
 static void glb_rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx,
                                                void *arg, grpc_error *error) {
-  rr_connectivity_data *rr_connectivity = arg;
+  rr_connectivity_data *rr_connectivity = (rr_connectivity_data *)arg;
   glb_lb_policy *glb_policy = rr_connectivity->glb_policy;
   if (glb_policy->shutting_down) {
     GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base,
@@ -841,8 +841,8 @@
 }
 
 static int balancer_name_cmp_fn(void *a, void *b) {
-  const char *a_str = a;
-  const char *b_str = b;
+  const char *a_str = (const char *)a;
+  const char *b_str = (const char *)b;
   return strcmp(a_str, b_str);
 }
 
@@ -929,14 +929,14 @@
   if (arg == NULL || arg->type != GRPC_ARG_POINTER) {
     return NULL;
   }
-  grpc_lb_addresses *addresses = arg->value.pointer.p;
+  grpc_lb_addresses *addresses = (grpc_lb_addresses *)arg->value.pointer.p;
   size_t num_grpclb_addrs = 0;
   for (size_t i = 0; i < addresses->num_addresses; ++i) {
     if (addresses->addresses[i].is_balancer) ++num_grpclb_addrs;
   }
   if (num_grpclb_addrs == 0) return NULL;
 
-  glb_lb_policy *glb_policy = gpr_zalloc(sizeof(*glb_policy));
+  glb_lb_policy *glb_policy = (glb_lb_policy *)gpr_zalloc(sizeof(*glb_policy));
 
   /* Get server name. */
   arg = grpc_channel_args_find(args->args, GRPC_ARG_SERVER_URI);
@@ -1190,7 +1190,8 @@
     }
     GRPC_LB_POLICY_REF(glb_policy->rr_policy, "glb_pick");
 
-    wrapped_rr_closure_arg *wc_arg = gpr_zalloc(sizeof(wrapped_rr_closure_arg));
+    wrapped_rr_closure_arg *wc_arg =
+        (wrapped_rr_closure_arg *)gpr_zalloc(sizeof(wrapped_rr_closure_arg));
 
     GRPC_CLOSURE_INIT(&wc_arg->wrapper_closure, wrapped_rr_closure, wc_arg,
                       grpc_schedule_on_exec_ctx);
@@ -1273,7 +1274,7 @@
 
 static void client_load_report_done_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *error) {
-  glb_lb_policy *glb_policy = arg;
+  glb_lb_policy *glb_policy = (glb_lb_policy *)arg;
   grpc_byte_buffer_destroy(glb_policy->client_load_report_payload);
   glb_policy->client_load_report_payload = NULL;
   if (error != GRPC_ERROR_NONE || glb_policy->lb_call == NULL) {
@@ -1313,7 +1314,7 @@
 
 static void send_client_load_report_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *error) {
-  glb_lb_policy *glb_policy = arg;
+  glb_lb_policy *glb_policy = (glb_lb_policy *)arg;
   if (error == GRPC_ERROR_CANCELLED || glb_policy->lb_call == NULL) {
     glb_policy->client_load_report_timer_pending = false;
     GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, &glb_policy->base,
@@ -1520,7 +1521,7 @@
 
 static void lb_on_sent_initial_request_locked(grpc_exec_ctx *exec_ctx,
                                               void *arg, grpc_error *error) {
-  glb_lb_policy *glb_policy = arg;
+  glb_lb_policy *glb_policy = (glb_lb_policy *)arg;
   glb_policy->initial_request_sent = true;
   // If we attempted to send a client load report before the initial
   // request was sent, send the load report now.
@@ -1533,7 +1534,7 @@
 
 static void lb_on_response_received_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *error) {
-  glb_lb_policy *glb_policy = arg;
+  glb_lb_policy *glb_policy = (glb_lb_policy *)arg;
   grpc_op ops[2];
   memset(ops, 0, sizeof(ops));
   grpc_op *op = ops;
@@ -1652,7 +1653,7 @@
 
 static void lb_call_on_retry_timer_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                           grpc_error *error) {
-  glb_lb_policy *glb_policy = arg;
+  glb_lb_policy *glb_policy = (glb_lb_policy *)arg;
   glb_policy->retry_timer_active = false;
   if (!glb_policy->shutting_down && error == GRPC_ERROR_NONE) {
     if (GRPC_TRACER_ON(grpc_lb_glb_trace)) {
@@ -1667,7 +1668,7 @@
 
 static void lb_on_server_status_received_locked(grpc_exec_ctx *exec_ctx,
                                                 void *arg, grpc_error *error) {
-  glb_lb_policy *glb_policy = arg;
+  glb_lb_policy *glb_policy = (glb_lb_policy *)arg;
   GPR_ASSERT(glb_policy->lb_call != NULL);
   if (GRPC_TRACER_ON(grpc_lb_glb_trace)) {
     char *status_details =
@@ -1730,8 +1731,8 @@
                                 glb_policy->pending_update_args->args);
       gpr_free(glb_policy->pending_update_args);
     }
-    glb_policy->pending_update_args =
-        gpr_zalloc(sizeof(*glb_policy->pending_update_args));
+    glb_policy->pending_update_args = (grpc_lb_policy_args *)gpr_zalloc(
+        sizeof(*glb_policy->pending_update_args));
     glb_policy->pending_update_args->client_channel_factory =
         args->client_channel_factory;
     glb_policy->pending_update_args->args = grpc_channel_args_copy(args->args);
@@ -1759,7 +1760,8 @@
               (void *)glb_policy);
     }
   }
-  const grpc_lb_addresses *addresses = arg->value.pointer.p;
+  const grpc_lb_addresses *addresses =
+      (const grpc_lb_addresses *)arg->value.pointer.p;
   GPR_ASSERT(glb_policy->lb_channel != NULL);
   grpc_channel_args *lb_channel_args = build_lb_channel_args(
       exec_ctx, addresses, glb_policy->response_generator, args->args);
@@ -1792,7 +1794,7 @@
 static void glb_lb_channel_on_connectivity_changed_cb(grpc_exec_ctx *exec_ctx,
                                                       void *arg,
                                                       grpc_error *error) {
-  glb_lb_policy *glb_policy = arg;
+  glb_lb_policy *glb_policy = (glb_lb_policy *)arg;
   if (glb_policy->shutting_down) goto done;
   // Re-initialize the lb_call. This should also take care of updating the
   // embedded RR policy. Note that the current RR policy, if any, will stay in
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
index 5b62623..903120c 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c
@@ -42,7 +42,8 @@
 };
 
 grpc_grpclb_client_stats* grpc_grpclb_client_stats_create() {
-  grpc_grpclb_client_stats* client_stats = gpr_zalloc(sizeof(*client_stats));
+  grpc_grpclb_client_stats* client_stats =
+      (grpc_grpclb_client_stats*)gpr_zalloc(sizeof(*client_stats));
   gpr_ref_init(&client_stats->refs, 1);
   return client_stats;
 }
@@ -88,7 +89,8 @@
   // Record the drop.
   if (client_stats->drop_token_counts == NULL) {
     client_stats->drop_token_counts =
-        gpr_zalloc(sizeof(grpc_grpclb_dropped_call_counts));
+        (grpc_grpclb_dropped_call_counts*)gpr_zalloc(
+            sizeof(grpc_grpclb_dropped_call_counts));
   }
   grpc_grpclb_dropped_call_counts* drop_token_counts =
       client_stats->drop_token_counts;
@@ -103,9 +105,9 @@
   while (new_num_entries < drop_token_counts->num_entries + 1) {
     new_num_entries *= 2;
   }
-  drop_token_counts->token_counts =
-      gpr_realloc(drop_token_counts->token_counts,
-                  new_num_entries * sizeof(grpc_grpclb_drop_token_count));
+  drop_token_counts->token_counts = (grpc_grpclb_drop_token_count*)gpr_realloc(
+      drop_token_counts->token_counts,
+      new_num_entries * sizeof(grpc_grpclb_drop_token_count));
   grpc_grpclb_drop_token_count* new_entry =
       &drop_token_counts->token_counts[drop_token_counts->num_entries++];
   new_entry->token = gpr_strdup(token);
diff --git a/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c b/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
index 6fa29f3..407bd18 100644
--- a/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
+++ b/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c
@@ -25,7 +25,7 @@
 /* invoked once for every Server in ServerList */
 static bool count_serverlist(pb_istream_t *stream, const pb_field_t *field,
                              void **arg) {
-  grpc_grpclb_serverlist *sl = *arg;
+  grpc_grpclb_serverlist *sl = (grpc_grpclb_serverlist *)*arg;
   grpc_grpclb_server server;
   if (!pb_decode(stream, grpc_lb_v1_Server_fields, &server)) {
     gpr_log(GPR_ERROR, "nanopb error: %s", PB_GET_ERROR(stream));
@@ -46,9 +46,10 @@
 /* invoked once for every Server in ServerList */
 static bool decode_serverlist(pb_istream_t *stream, const pb_field_t *field,
                               void **arg) {
-  decode_serverlist_arg *dec_arg = *arg;
+  decode_serverlist_arg *dec_arg = (decode_serverlist_arg *)*arg;
   GPR_ASSERT(dec_arg->serverlist->num_servers >= dec_arg->decoding_idx);
-  grpc_grpclb_server *server = gpr_zalloc(sizeof(grpc_grpclb_server));
+  grpc_grpclb_server *server =
+      (grpc_grpclb_server *)gpr_zalloc(sizeof(grpc_grpclb_server));
   if (!pb_decode(stream, grpc_lb_v1_Server_fields, server)) {
     gpr_free(server);
     gpr_log(GPR_ERROR, "nanopb error: %s", PB_GET_ERROR(stream));
@@ -59,7 +60,8 @@
 }
 
 grpc_grpclb_request *grpc_grpclb_request_create(const char *lb_service_name) {
-  grpc_grpclb_request *req = gpr_malloc(sizeof(grpc_grpclb_request));
+  grpc_grpclb_request *req =
+      (grpc_grpclb_request *)gpr_malloc(sizeof(grpc_grpclb_request));
   req->has_client_stats = false;
   req->has_initial_request = true;
   req->initial_request.has_name = true;
@@ -78,14 +80,15 @@
 
 static bool encode_string(pb_ostream_t *stream, const pb_field_t *field,
                           void *const *arg) {
-  char *str = *arg;
+  char *str = (char *)*arg;
   if (!pb_encode_tag_for_field(stream, field)) return false;
   return pb_encode_string(stream, (uint8_t *)str, strlen(str));
 }
 
 static bool encode_drops(pb_ostream_t *stream, const pb_field_t *field,
                          void *const *arg) {
-  grpc_grpclb_dropped_call_counts *drop_entries = *arg;
+  grpc_grpclb_dropped_call_counts *drop_entries =
+      (grpc_grpclb_dropped_call_counts *)*arg;
   if (drop_entries == NULL) return true;
   for (size_t i = 0; i < drop_entries->num_entries; ++i) {
     if (!pb_encode_tag_for_field(stream, field)) return false;
@@ -104,7 +107,8 @@
 
 grpc_grpclb_request *grpc_grpclb_load_report_request_create_locked(
     grpc_grpclb_client_stats *client_stats) {
-  grpc_grpclb_request *req = gpr_zalloc(sizeof(grpc_grpclb_request));
+  grpc_grpclb_request *req =
+      (grpc_grpclb_request *)gpr_zalloc(sizeof(grpc_grpclb_request));
   req->has_client_stats = true;
   req->client_stats.has_timestamp = true;
   populate_timestamp(gpr_now(GPR_CLOCK_REALTIME), &req->client_stats.timestamp);
@@ -179,7 +183,8 @@
       pb_istream_from_buffer(GRPC_SLICE_START_PTR(encoded_grpc_grpclb_response),
                              GRPC_SLICE_LENGTH(encoded_grpc_grpclb_response));
   pb_istream_t stream_at_start = stream;
-  grpc_grpclb_serverlist *sl = gpr_zalloc(sizeof(grpc_grpclb_serverlist));
+  grpc_grpclb_serverlist *sl =
+      (grpc_grpclb_serverlist *)gpr_zalloc(sizeof(grpc_grpclb_serverlist));
   grpc_grpclb_response res;
   memset(&res, 0, sizeof(grpc_grpclb_response));
   // First pass: count number of servers.
@@ -193,7 +198,8 @@
   }
   // Second pass: populate servers.
   if (sl->num_servers > 0) {
-    sl->servers = gpr_zalloc(sizeof(grpc_grpclb_server *) * sl->num_servers);
+    sl->servers = (grpc_grpclb_server **)gpr_zalloc(
+        sizeof(grpc_grpclb_server *) * sl->num_servers);
     decode_serverlist_arg decode_arg;
     memset(&decode_arg, 0, sizeof(decode_arg));
     decode_arg.serverlist = sl;
@@ -226,13 +232,16 @@
 
 grpc_grpclb_serverlist *grpc_grpclb_serverlist_copy(
     const grpc_grpclb_serverlist *sl) {
-  grpc_grpclb_serverlist *copy = gpr_zalloc(sizeof(grpc_grpclb_serverlist));
+  grpc_grpclb_serverlist *copy =
+      (grpc_grpclb_serverlist *)gpr_zalloc(sizeof(grpc_grpclb_serverlist));
   copy->num_servers = sl->num_servers;
   memcpy(&copy->expiration_interval, &sl->expiration_interval,
          sizeof(grpc_grpclb_duration));
-  copy->servers = gpr_malloc(sizeof(grpc_grpclb_server *) * sl->num_servers);
+  copy->servers = (grpc_grpclb_server **)gpr_malloc(
+      sizeof(grpc_grpclb_server *) * sl->num_servers);
   for (size_t i = 0; i < sl->num_servers; i++) {
-    copy->servers[i] = gpr_malloc(sizeof(grpc_grpclb_server));
+    copy->servers[i] =
+        (grpc_grpclb_server *)gpr_malloc(sizeof(grpc_grpclb_server));
     memcpy(copy->servers[i], sl->servers[i], sizeof(grpc_grpclb_server));
   }
   return copy;
diff --git a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
index a50ba09..fab3073 100644
--- a/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
+++ b/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c
@@ -217,7 +217,7 @@
   if (!p->started_picking) {
     start_picking_locked(exec_ctx, p);
   }
-  pp = gpr_malloc(sizeof(*pp));
+  pp = (pending_pick *)gpr_malloc(sizeof(*pp));
   pp->next = p->pending_picks;
   pp->target = target;
   pp->initial_metadata_flags = pick_args->initial_metadata_flags;
@@ -314,7 +314,8 @@
     }
     return;
   }
-  const grpc_lb_addresses *addresses = arg->value.pointer.p;
+  const grpc_lb_addresses *addresses =
+      (const grpc_lb_addresses *)arg->value.pointer.p;
   if (addresses->num_addresses == 0) {
     // Empty update. Unsubscribe from all current subchannels and put the
     // channel in TRANSIENT_FAILURE.
@@ -392,7 +393,8 @@
       grpc_channel_args_destroy(exec_ctx, p->pending_update_args->args);
       gpr_free(p->pending_update_args);
     }
-    p->pending_update_args = gpr_zalloc(sizeof(*p->pending_update_args));
+    p->pending_update_args =
+        (grpc_lb_policy_args *)gpr_zalloc(sizeof(*p->pending_update_args));
     p->pending_update_args->client_channel_factory =
         args->client_channel_factory;
     p->pending_update_args->args = grpc_channel_args_copy(args->args);
@@ -456,7 +458,7 @@
 
 static void pf_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *error) {
-  pick_first_lb_policy *p = arg;
+  pick_first_lb_policy *p = (pick_first_lb_policy *)arg;
   grpc_subchannel *selected_subchannel;
   pending_pick *pp;
 
@@ -678,7 +680,7 @@
                                          grpc_lb_policy_factory *factory,
                                          grpc_lb_policy_args *args) {
   GPR_ASSERT(args->client_channel_factory != NULL);
-  pick_first_lb_policy *p = gpr_zalloc(sizeof(*p));
+  pick_first_lb_policy *p = (pick_first_lb_policy *)gpr_zalloc(sizeof(*p));
   if (GRPC_TRACER_ON(grpc_lb_pick_first_trace)) {
     gpr_log(GPR_DEBUG, "Pick First %p created.", (void *)p);
   }
diff --git a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
index 866fb9a..be91d3d 100644
--- a/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c
@@ -144,10 +144,11 @@
 
 static rr_subchannel_list *rr_subchannel_list_create(round_robin_lb_policy *p,
                                                      size_t num_subchannels) {
-  rr_subchannel_list *subchannel_list = gpr_zalloc(sizeof(*subchannel_list));
+  rr_subchannel_list *subchannel_list =
+      (rr_subchannel_list *)gpr_zalloc(sizeof(*subchannel_list));
   subchannel_list->policy = p;
   subchannel_list->subchannels =
-      gpr_zalloc(sizeof(subchannel_data) * num_subchannels);
+      (subchannel_data *)gpr_zalloc(sizeof(subchannel_data) * num_subchannels);
   subchannel_list->num_subchannels = num_subchannels;
   gpr_ref_init(&subchannel_list->refcount, 1);
   if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) {
@@ -452,7 +453,7 @@
   if (!p->started_picking) {
     start_picking_locked(exec_ctx, p);
   }
-  pending_pick *pp = gpr_malloc(sizeof(*pp));
+  pending_pick *pp = (pending_pick *)gpr_malloc(sizeof(*pp));
   pp->next = p->pending_picks;
   pp->target = target;
   pp->on_complete = on_complete;
@@ -553,7 +554,7 @@
 
 static void rr_connectivity_changed_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *error) {
-  subchannel_data *sd = arg;
+  subchannel_data *sd = (subchannel_data *)arg;
   round_robin_lb_policy *p = sd->subchannel_list->policy;
   if (GRPC_TRACER_ON(grpc_lb_round_robin_trace)) {
     gpr_log(
@@ -754,7 +755,7 @@
     }
     return;
   }
-  grpc_lb_addresses *addresses = arg->value.pointer.p;
+  grpc_lb_addresses *addresses = (grpc_lb_addresses *)arg->value.pointer.p;
   rr_subchannel_list *subchannel_list =
       rr_subchannel_list_create(p, addresses->num_addresses);
   if (addresses->num_addresses == 0) {
@@ -887,7 +888,7 @@
                                           grpc_lb_policy_factory *factory,
                                           grpc_lb_policy_args *args) {
   GPR_ASSERT(args->client_channel_factory != NULL);
-  round_robin_lb_policy *p = gpr_zalloc(sizeof(*p));
+  round_robin_lb_policy *p = (round_robin_lb_policy *)gpr_zalloc(sizeof(*p));
   grpc_lb_policy_init(&p->base, &round_robin_lb_policy_vtable, args->combiner);
   grpc_connectivity_state_init(&p->state_tracker, GRPC_CHANNEL_IDLE,
                                "round_robin");
diff --git a/src/core/ext/filters/client_channel/lb_policy_factory.c b/src/core/ext/filters/client_channel/lb_policy_factory.c
index 538d8d6..cdcaf17 100644
--- a/src/core/ext/filters/client_channel/lb_policy_factory.c
+++ b/src/core/ext/filters/client_channel/lb_policy_factory.c
@@ -28,11 +28,12 @@
 
 grpc_lb_addresses* grpc_lb_addresses_create(
     size_t num_addresses, const grpc_lb_user_data_vtable* user_data_vtable) {
-  grpc_lb_addresses* addresses = gpr_zalloc(sizeof(grpc_lb_addresses));
+  grpc_lb_addresses* addresses =
+      (grpc_lb_addresses*)gpr_zalloc(sizeof(grpc_lb_addresses));
   addresses->num_addresses = num_addresses;
   addresses->user_data_vtable = user_data_vtable;
   const size_t addresses_size = sizeof(grpc_lb_address) * num_addresses;
-  addresses->addresses = gpr_zalloc(addresses_size);
+  addresses->addresses = (grpc_lb_address*)gpr_zalloc(addresses_size);
   return addresses;
 }
 
diff --git a/src/core/ext/filters/client_channel/proxy_mapper_registry.c b/src/core/ext/filters/client_channel/proxy_mapper_registry.c
index 5f43a05..09967ee 100644
--- a/src/core/ext/filters/client_channel/proxy_mapper_registry.c
+++ b/src/core/ext/filters/client_channel/proxy_mapper_registry.c
@@ -34,7 +34,7 @@
 static void grpc_proxy_mapper_list_register(grpc_proxy_mapper_list* list,
                                             bool at_start,
                                             grpc_proxy_mapper* mapper) {
-  list->list = gpr_realloc(
+  list->list = (grpc_proxy_mapper**)gpr_realloc(
       list->list, (list->num_mappers + 1) * sizeof(grpc_proxy_mapper*));
   if (at_start) {
     memmove(list->list + 1, list->list,
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
index f1480bb..b87a3b7 100644
--- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
+++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c
@@ -144,7 +144,7 @@
 
 static void dns_ares_on_retry_timer_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *error) {
-  ares_dns_resolver *r = arg;
+  ares_dns_resolver *r = (ares_dns_resolver *)arg;
   r->have_retry_timer = false;
   if (error == GRPC_ERROR_NONE) {
     if (!r->resolving) {
@@ -227,7 +227,7 @@
 
 static void dns_ares_on_resolved_locked(grpc_exec_ctx *exec_ctx, void *arg,
                                         grpc_error *error) {
-  ares_dns_resolver *r = arg;
+  ares_dns_resolver *r = (ares_dns_resolver *)arg;
   grpc_channel_args *result = NULL;
   GPR_ASSERT(r->resolving);
   r->resolving = false;
@@ -363,7 +363,8 @@
   const char *path = args->uri->path;
   if (path[0] == '/') ++path;
   /* Create resolver. */
-  ares_dns_resolver *r = gpr_zalloc(sizeof(ares_dns_resolver));
+  ares_dns_resolver *r =
+      (ares_dns_resolver *)gpr_zalloc(sizeof(ares_dns_resolver));
   grpc_resolver_init(&r->base, &dns_ares_resolver_vtable, args->combiner);
   if (0 != strcmp(args->uri->authority, "")) {
     r->dns_server = gpr_strdup(args->uri->authority);
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
index b696344..9747d39 100644
--- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
+++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c
@@ -111,7 +111,7 @@
 
 grpc_error *grpc_ares_ev_driver_create(grpc_ares_ev_driver **ev_driver,
                                        grpc_pollset_set *pollset_set) {
-  *ev_driver = gpr_malloc(sizeof(grpc_ares_ev_driver));
+  *ev_driver = (grpc_ares_ev_driver *)gpr_malloc(sizeof(grpc_ares_ev_driver));
   int status = ares_init(&(*ev_driver)->channel);
   gpr_log(GPR_DEBUG, "grpc_ares_ev_driver_create");
   if (status != ARES_SUCCESS) {
@@ -178,7 +178,7 @@
 
 static void on_readable_cb(grpc_exec_ctx *exec_ctx, void *arg,
                            grpc_error *error) {
-  fd_node *fdn = arg;
+  fd_node *fdn = (fd_node *)arg;
   grpc_ares_ev_driver *ev_driver = fdn->ev_driver;
   gpr_mu_lock(&fdn->mu);
   fdn->readable_registered = false;
@@ -205,7 +205,7 @@
 
 static void on_writable_cb(grpc_exec_ctx *exec_ctx, void *arg,
                            grpc_error *error) {
-  fd_node *fdn = arg;
+  fd_node *fdn = (fd_node *)arg;
   grpc_ares_ev_driver *ev_driver = fdn->ev_driver;
   gpr_mu_lock(&fdn->mu);
   fdn->writable_registered = false;
@@ -251,7 +251,7 @@
         if (fdn == NULL) {
           char *fd_name;
           gpr_asprintf(&fd_name, "ares_ev_driver-%" PRIuPTR, i);
-          fdn = gpr_malloc(sizeof(fd_node));
+          fdn = (fd_node *)gpr_malloc(sizeof(fd_node));
           gpr_log(GPR_DEBUG, "new fd: %d", socks[i]);
           fdn->grpc_fd = grpc_fd_create(socks[i], fd_name);
           fdn->ev_driver = ev_driver;
diff --git a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
index e65723a..0d71f35 100644
--- a/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
+++ b/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c
@@ -158,9 +158,9 @@
     for (i = 0; hostent->h_addr_list[i] != NULL; i++) {
     }
     (*lb_addresses)->num_addresses += i;
-    (*lb_addresses)->addresses =
-        gpr_realloc((*lb_addresses)->addresses,
-                    sizeof(grpc_lb_address) * (*lb_addresses)->num_addresses);
+    (*lb_addresses)->addresses = (grpc_lb_address *)gpr_realloc(
+        (*lb_addresses)->addresses,
+        sizeof(grpc_lb_address) * (*lb_addresses)->num_addresses);
     for (i = prev_naddr; i < (*lb_addresses)->num_addresses; i++) {
       switch (hostent->h_addrtype) {
         case AF_INET6: {
@@ -293,12 +293,12 @@
   // Found a service config record.
   if (result != NULL) {
     size_t service_config_len = result->length - prefix_len;
-    *r->service_config_json_out = gpr_malloc(service_config_len + 1);
+    *r->service_config_json_out = (char *)gpr_malloc(service_config_len + 1);
     memcpy(*r->service_config_json_out, result->txt + prefix_len,
            service_config_len);
     for (result = result->next; result != NULL && !result->record_start;
          result = result->next) {
-      *r->service_config_json_out = gpr_realloc(
+      *r->service_config_json_out = (char *)gpr_realloc(
           *r->service_config_json_out, service_config_len + result->length + 1);
       memcpy(*r->service_config_json_out + service_config_len, result->txt,
              result->length);
@@ -360,7 +360,8 @@
   error = grpc_ares_ev_driver_create(&ev_driver, interested_parties);
   if (error != GRPC_ERROR_NONE) goto error_cleanup;
 
-  grpc_ares_request *r = gpr_zalloc(sizeof(grpc_ares_request));
+  grpc_ares_request *r =
+      (grpc_ares_request *)gpr_zalloc(sizeof(grpc_ares_request));
   gpr_mu_init(&r->mu);
   r->ev_driver = ev_driver;
   r->on_done = on_done;
@@ -502,10 +503,11 @@
   if (r->lb_addrs == NULL || r->lb_addrs->num_addresses == 0) {
     *resolved_addresses = NULL;
   } else {
-    *resolved_addresses = gpr_zalloc(sizeof(grpc_resolved_addresses));
+    *resolved_addresses =
+        (grpc_resolved_addresses *)gpr_zalloc(sizeof(grpc_resolved_addresses));
     (*resolved_addresses)->naddrs = r->lb_addrs->num_addresses;
-    (*resolved_addresses)->addrs = gpr_zalloc(sizeof(grpc_resolved_address) *
-                                              (*resolved_addresses)->naddrs);
+    (*resolved_addresses)->addrs = (grpc_resolved_address *)gpr_zalloc(
+        sizeof(grpc_resolved_address) * (*resolved_addresses)->naddrs);
     for (size_t i = 0; i < (*resolved_addresses)->naddrs; i++) {
       GPR_ASSERT(!r->lb_addrs->addresses[i].is_balancer);
       memcpy(&(*resolved_addresses)->addrs[i],
diff --git a/src/core/ext/filters/client_channel/retry_throttle.c b/src/core/ext/filters/client_channel/retry_throttle.c
index 0c7a3ae..6cd6654 100644
--- a/src/core/ext/filters/client_channel/retry_throttle.c
+++ b/src/core/ext/filters/client_channel/retry_throttle.c
@@ -139,12 +139,14 @@
 }
 
 static void destroy_server_retry_throttle_data(void* value, void* unused) {
-  grpc_server_retry_throttle_data* throttle_data = value;
+  grpc_server_retry_throttle_data* throttle_data =
+      (grpc_server_retry_throttle_data*)value;
   grpc_server_retry_throttle_data_unref(throttle_data);
 }
 
 static void* copy_server_retry_throttle_data(void* value, void* unused) {
-  grpc_server_retry_throttle_data* throttle_data = value;
+  grpc_server_retry_throttle_data* throttle_data =
+      (grpc_server_retry_throttle_data*)value;
   return grpc_server_retry_throttle_data_ref(throttle_data);
 }
 
diff --git a/src/core/ext/filters/client_channel/subchannel.c b/src/core/ext/filters/client_channel/subchannel.c
index 6b5b383..05c55aa 100644
--- a/src/core/ext/filters/client_channel/subchannel.c
+++ b/src/core/ext/filters/client_channel/subchannel.c
@@ -157,7 +157,7 @@
 
 static void connection_destroy(grpc_exec_ctx *exec_ctx, void *arg,
                                grpc_error *error) {
-  grpc_connected_subchannel *c = arg;
+  grpc_connected_subchannel *c = (grpc_connected_subchannel *)arg;
   grpc_channel_stack_destroy(exec_ctx, CHANNEL_STACK_FROM_CONNECTION(c));
   gpr_free(c);
 }
@@ -181,7 +181,7 @@
 
 static void subchannel_destroy(grpc_exec_ctx *exec_ctx, void *arg,
                                grpc_error *error) {
-  grpc_subchannel *c = arg;
+  grpc_subchannel *c = (grpc_subchannel *)arg;
   gpr_free((void *)c->filters);
   grpc_channel_args_destroy(exec_ctx, c->args);
   grpc_connectivity_state_destroy(exec_ctx, &c->state_tracker);
@@ -290,21 +290,23 @@
     return c;
   }
 
-  c = gpr_zalloc(sizeof(*c));
+  c = (grpc_subchannel *)gpr_zalloc(sizeof(*c));
   c->key = key;
   gpr_atm_no_barrier_store(&c->ref_pair, 1 << INTERNAL_REF_BITS);
   c->connector = connector;
   grpc_connector_ref(c->connector);
   c->num_filters = args->filter_count;
   if (c->num_filters > 0) {
-    c->filters = gpr_malloc(sizeof(grpc_channel_filter *) * c->num_filters);
+    c->filters = (const grpc_channel_filter **)gpr_malloc(
+        sizeof(grpc_channel_filter *) * c->num_filters);
     memcpy((void *)c->filters, args->filters,
            sizeof(grpc_channel_filter *) * c->num_filters);
   } else {
     c->filters = NULL;
   }
   c->pollset_set = grpc_pollset_set_create();
-  grpc_resolved_address *addr = gpr_malloc(sizeof(*addr));
+  grpc_resolved_address *addr =
+      (grpc_resolved_address *)gpr_malloc(sizeof(*addr));
   grpc_get_subchannel_address_arg(exec_ctx, args->args, addr);
   grpc_resolved_address *new_address = NULL;
   grpc_channel_args *new_args = NULL;
@@ -400,7 +402,7 @@
 
 static void on_external_state_watcher_done(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *error) {
-  external_state_watcher *w = arg;
+  external_state_watcher *w = (external_state_watcher *)arg;
   grpc_closure *follow_up = w->notify;
   if (w->pollset_set != NULL) {
     grpc_pollset_set_del_pollset_set(exec_ctx, w->subchannel->pollset_set,
@@ -416,7 +418,7 @@
 }
 
 static void on_alarm(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_subchannel *c = arg;
+  grpc_subchannel *c = (grpc_subchannel *)arg;
   gpr_mu_lock(&c->mu);
   c->have_alarm = false;
   if (c->disconnected) {
@@ -501,7 +503,7 @@
     }
     gpr_mu_unlock(&c->mu);
   } else {
-    w = gpr_malloc(sizeof(*w));
+    w = (external_state_watcher *)gpr_malloc(sizeof(*w));
     w->subchannel = c;
     w->pollset_set = interested_parties;
     w->notify = notify;
@@ -533,7 +535,7 @@
 
 static void subchannel_on_child_state_changed(grpc_exec_ctx *exec_ctx, void *p,
                                               grpc_error *error) {
-  state_watcher *sw = p;
+  state_watcher *sw = (state_watcher *)p;
   grpc_subchannel *c = sw->subchannel;
   gpr_mu *mu = &c->mu;
 
@@ -623,7 +625,7 @@
   memset(&c->connecting_result, 0, sizeof(c->connecting_result));
 
   /* initialize state watcher */
-  sw_subchannel = gpr_malloc(sizeof(*sw_subchannel));
+  sw_subchannel = (state_watcher *)gpr_malloc(sizeof(*sw_subchannel));
   sw_subchannel->subchannel = c;
   sw_subchannel->connectivity_state = GRPC_CHANNEL_READY;
   GRPC_CLOSURE_INIT(&sw_subchannel->closure, subchannel_on_child_state_changed,
@@ -660,7 +662,7 @@
 
 static void subchannel_connected(grpc_exec_ctx *exec_ctx, void *arg,
                                  grpc_error *error) {
-  grpc_subchannel *c = arg;
+  grpc_subchannel *c = (grpc_subchannel *)arg;
   grpc_channel_args *delete_channel_args = c->connecting_result.channel_args;
 
   GRPC_SUBCHANNEL_WEAK_REF(c, "connected");
@@ -696,7 +698,7 @@
 
 static void subchannel_call_destroy(grpc_exec_ctx *exec_ctx, void *call,
                                     grpc_error *error) {
-  grpc_subchannel_call *c = call;
+  grpc_subchannel_call *c = (grpc_subchannel_call *)call;
   GPR_ASSERT(c->schedule_closure_after_destroy != NULL);
   GPR_TIMER_BEGIN("grpc_subchannel_call_unref.destroy", 0);
   grpc_connected_subchannel *connection = c->connection;
@@ -750,7 +752,7 @@
     const grpc_connected_subchannel_call_args *args,
     grpc_subchannel_call **call) {
   grpc_channel_stack *chanstk = CHANNEL_STACK_FROM_CONNECTION(con);
-  *call = gpr_arena_alloc(
+  *call = (grpc_subchannel_call *)gpr_arena_alloc(
       args->arena, sizeof(grpc_subchannel_call) + chanstk->call_stack_size);
   grpc_call_stack *callstk = SUBCHANNEL_CALL_TO_CALL_STACK(*call);
   (*call)->connection = GRPC_CONNECTED_SUBCHANNEL_REF(con, "subchannel_call");
diff --git a/src/core/ext/filters/client_channel/subchannel_index.c b/src/core/ext/filters/client_channel/subchannel_index.c
index ababd05..f319aff 100644
--- a/src/core/ext/filters/client_channel/subchannel_index.c
+++ b/src/core/ext/filters/client_channel/subchannel_index.c
@@ -43,11 +43,11 @@
 static grpc_subchannel_key *create_key(
     const grpc_subchannel_args *args,
     grpc_channel_args *(*copy_channel_args)(const grpc_channel_args *args)) {
-  grpc_subchannel_key *k = gpr_malloc(sizeof(*k));
+  grpc_subchannel_key *k = (grpc_subchannel_key *)gpr_malloc(sizeof(*k));
   k->args.filter_count = args->filter_count;
   if (k->args.filter_count > 0) {
-    k->args.filters =
-        gpr_malloc(sizeof(*k->args.filters) * k->args.filter_count);
+    k->args.filters = (const grpc_channel_filter **)gpr_malloc(
+        sizeof(*k->args.filters) * k->args.filter_count);
     memcpy((grpc_channel_filter *)k->args.filters, args->filters,
            sizeof(*k->args.filters) * k->args.filter_count);
   } else {
@@ -136,7 +136,7 @@
   gpr_avl index = gpr_avl_ref(g_subchannel_index, exec_ctx);
   gpr_mu_unlock(&g_mu);
 
-  grpc_subchannel *c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(
+  grpc_subchannel *c = (grpc_subchannel *)GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(
       gpr_avl_get(index, key, exec_ctx), "index_find");
   gpr_avl_unref(index, exec_ctx);
 
@@ -159,7 +159,7 @@
     gpr_mu_unlock(&g_mu);
 
     // - Check to see if a subchannel already exists
-    c = gpr_avl_get(index, key, exec_ctx);
+    c = (grpc_subchannel *)gpr_avl_get(index, key, exec_ctx);
     if (c != NULL) {
       c = GRPC_SUBCHANNEL_REF_FROM_WEAK_REF(c, "index_register");
     }
@@ -207,7 +207,7 @@
 
     // Check to see if this key still refers to the previously
     // registered subchannel
-    grpc_subchannel *c = gpr_avl_get(index, key, exec_ctx);
+    grpc_subchannel *c = (grpc_subchannel *)gpr_avl_get(index, key, exec_ctx);
     if (c != constructed) {
       gpr_avl_unref(index, exec_ctx);
       break;
diff --git a/src/core/ext/filters/client_channel/uri_parser.c b/src/core/ext/filters/client_channel/uri_parser.c
index e841928..fb4fb8e 100644
--- a/src/core/ext/filters/client_channel/uri_parser.c
+++ b/src/core/ext/filters/client_channel/uri_parser.c
@@ -45,7 +45,7 @@
     gpr_log(GPR_ERROR, "%s%s'", line_prefix, uri_text);
     gpr_free(line_prefix);
 
-    line_prefix = gpr_malloc(pfx_len + 1);
+    line_prefix = (char *)gpr_malloc(pfx_len + 1);
     memset(line_prefix, ' ', pfx_len);
     line_prefix[pfx_len] = 0;
     gpr_log(GPR_ERROR, "%s^ here", line_prefix);
@@ -156,7 +156,8 @@
 
   gpr_string_split(uri->query, QUERY_PARTS_SEPARATOR, &uri->query_parts,
                    &uri->num_query_parts);
-  uri->query_parts_values = gpr_malloc(uri->num_query_parts * sizeof(char **));
+  uri->query_parts_values =
+      (char **)gpr_malloc(uri->num_query_parts * sizeof(char **));
   for (size_t i = 0; i < uri->num_query_parts; i++) {
     char **query_param_parts;
     size_t num_query_param_parts;
@@ -269,7 +270,7 @@
     fragment_end = i;
   }
 
-  uri = gpr_zalloc(sizeof(*uri));
+  uri = (grpc_uri *)gpr_zalloc(sizeof(*uri));
   uri->scheme =
       decode_and_copy_component(exec_ctx, uri_text, scheme_begin, scheme_end);
   uri->authority = decode_and_copy_component(exec_ctx, uri_text,
diff --git a/src/core/ext/filters/deadline/deadline_filter.c b/src/core/ext/filters/deadline/deadline_filter.c
index 565b067..1aed488 100644
--- a/src/core/ext/filters/deadline/deadline_filter.c
+++ b/src/core/ext/filters/deadline/deadline_filter.c
@@ -38,7 +38,7 @@
 // filter stack.  Yields the call combiner when the batch returns.
 static void yield_call_combiner(grpc_exec_ctx* exec_ctx, void* arg,
                                 grpc_error* ignored) {
-  grpc_deadline_state* deadline_state = arg;
+  grpc_deadline_state* deadline_state = (grpc_deadline_state*)arg;
   GRPC_CALL_COMBINER_STOP(exec_ctx, deadline_state->call_combiner,
                           "got on_complete from cancel_stream batch");
   GRPC_CALL_STACK_UNREF(exec_ctx, deadline_state->call_stack, "deadline_timer");
@@ -48,8 +48,8 @@
 // synchronized.
 static void send_cancel_op_in_call_combiner(grpc_exec_ctx* exec_ctx, void* arg,
                                             grpc_error* error) {
-  grpc_call_element* elem = arg;
-  grpc_deadline_state* deadline_state = elem->call_data;
+  grpc_call_element* elem = (grpc_call_element*)arg;
+  grpc_deadline_state* deadline_state = (grpc_deadline_state*)elem->call_data;
   grpc_transport_stream_op_batch* batch = grpc_make_transport_stream_op(
       GRPC_CLOSURE_INIT(&deadline_state->timer_callback, yield_call_combiner,
                         deadline_state, grpc_schedule_on_exec_ctx));
@@ -160,8 +160,10 @@
 };
 static void start_timer_after_init(grpc_exec_ctx* exec_ctx, void* arg,
                                    grpc_error* error) {
-  struct start_timer_after_init_state* state = arg;
-  grpc_deadline_state* deadline_state = state->elem->call_data;
+  struct start_timer_after_init_state* state =
+      (struct start_timer_after_init_state*)arg;
+  grpc_deadline_state* deadline_state =
+      (grpc_deadline_state*)state->elem->call_data;
   if (!state->in_call_combiner) {
     // We are initially called without holding the call combiner, so we
     // need to bounce ourselves into it.
@@ -195,7 +197,8 @@
     // call stack initialization is finished.  To avoid that problem, we
     // create a closure to start the timer, and we schedule that closure
     // to be run after call stack initialization is done.
-    struct start_timer_after_init_state* state = gpr_zalloc(sizeof(*state));
+    struct start_timer_after_init_state* state =
+        (struct start_timer_after_init_state*)gpr_zalloc(sizeof(*state));
     state->elem = elem;
     state->deadline = deadline;
     GRPC_CLOSURE_INIT(&state->closure, start_timer_after_init, state,
diff --git a/src/core/ext/filters/http/client/http_client_filter.c b/src/core/ext/filters/http/client/http_client_filter.c
index 2d7429c..6208089 100644
--- a/src/core/ext/filters/http/client/http_client_filter.c
+++ b/src/core/ext/filters/http/client/http_client_filter.c
@@ -139,8 +139,8 @@
 
 static void recv_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
                                         void *user_data, grpc_error *error) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (error == GRPC_ERROR_NONE) {
     error = client_filter_incoming_metadata(exec_ctx, elem,
                                             calld->recv_initial_metadata);
@@ -154,8 +154,8 @@
 static void recv_trailing_metadata_on_complete(grpc_exec_ctx *exec_ctx,
                                                void *user_data,
                                                grpc_error *error) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (error == GRPC_ERROR_NONE) {
     error = client_filter_incoming_metadata(exec_ctx, elem,
                                             calld->recv_trailing_metadata);
@@ -234,7 +234,7 @@
 }
 
 static char *slice_buffer_to_string(grpc_slice_buffer *slice_buffer) {
-  char *payload_bytes = gpr_malloc(slice_buffer->length + 1);
+  char *payload_bytes = (char *)gpr_malloc(slice_buffer->length + 1);
   size_t offset = 0;
   for (size_t i = 0; i < slice_buffer->count; ++i) {
     memcpy(payload_bytes + offset,
@@ -300,8 +300,8 @@
 static void hc_start_transport_stream_op_batch(
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_transport_stream_op_batch *batch) {
-  call_data *calld = elem->call_data;
-  channel_data *channeld = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *channeld = (channel_data *)elem->channel_data;
   GPR_TIMER_BEGIN("hc_start_transport_stream_op_batch", 0);
 
   if (batch->recv_initial_metadata) {
@@ -536,7 +536,7 @@
 static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
                                      grpc_channel_element *elem,
                                      grpc_channel_element_args *args) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   GPR_ASSERT(!args->is_last);
   GPR_ASSERT(args->optional_transport != NULL);
   chand->static_scheme = scheme_from_args(args->channel_args);
@@ -552,7 +552,7 @@
 /* Destructor for channel data */
 static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
                                  grpc_channel_element *elem) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   GRPC_MDELEM_UNREF(exec_ctx, chand->user_agent);
 }
 
diff --git a/src/core/ext/filters/http/http_filters_plugin.c b/src/core/ext/filters/http/http_filters_plugin.c
index a5c1b92..88bd225 100644
--- a/src/core/ext/filters/http/http_filters_plugin.c
+++ b/src/core/ext/filters/http/http_filters_plugin.c
@@ -44,7 +44,7 @@
                                       grpc_channel_stack_builder *builder,
                                       void *arg) {
   if (!is_building_http_like_transport(builder)) return true;
-  optional_filter *filtarg = arg;
+  optional_filter *filtarg = (optional_filter *)arg;
   const grpc_channel_args *channel_args =
       grpc_channel_stack_builder_get_channel_arguments(builder);
   bool enable = grpc_channel_arg_get_bool(
diff --git a/src/core/ext/filters/http/message_compress/message_compress_filter.c b/src/core/ext/filters/http/message_compress/message_compress_filter.c
index 98a503c..0145dff 100644
--- a/src/core/ext/filters/http/message_compress/message_compress_filter.c
+++ b/src/core/ext/filters/http/message_compress/message_compress_filter.c
@@ -82,8 +82,8 @@
 
 static bool skip_compression(grpc_call_element *elem, uint32_t flags,
                              bool has_compression_algorithm) {
-  call_data *calld = elem->call_data;
-  channel_data *channeld = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *channeld = (channel_data *)elem->channel_data;
 
   if (flags & (GRPC_WRITE_NO_COMPRESS | GRPC_WRITE_INTERNAL_COMPRESS)) {
     return true;
@@ -106,8 +106,8 @@
 static grpc_error *process_send_initial_metadata(
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_metadata_batch *initial_metadata, bool *has_compression_algorithm) {
-  call_data *calld = elem->call_data;
-  channel_data *channeld = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *channeld = (channel_data *)elem->channel_data;
   *has_compression_algorithm = false;
   grpc_stream_compression_algorithm stream_compression_algorithm =
       GRPC_STREAM_COMPRESS_NONE;
@@ -285,7 +285,7 @@
 static void fail_send_message_batch_in_call_combiner(grpc_exec_ctx *exec_ctx,
                                                      void *arg,
                                                      grpc_error *error) {
-  call_data *calld = arg;
+  call_data *calld = (call_data *)arg;
   if (calld->send_message_batch != NULL) {
     grpc_transport_stream_op_batch_finish_with_failure(
         exec_ctx, calld->send_message_batch, GRPC_ERROR_REF(error),
@@ -374,7 +374,7 @@
 static void compress_start_transport_stream_op_batch(
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_transport_stream_op_batch *batch) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   GPR_TIMER_BEGIN("compress_start_transport_stream_op_batch", 0);
   // Handle cancel_stream.
   if (batch->cancel_stream) {
@@ -473,7 +473,7 @@
 static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                               const grpc_call_final_info *final_info,
                               grpc_closure *ignored) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_slice_buffer_destroy_internal(exec_ctx, &calld->slices);
   GRPC_ERROR_UNREF(calld->cancel_error);
 }
@@ -482,7 +482,7 @@
 static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
                                      grpc_channel_element *elem,
                                      grpc_channel_element_args *args) {
-  channel_data *channeld = elem->channel_data;
+  channel_data *channeld = (channel_data *)elem->channel_data;
 
   /* Configuration for message compression */
   channeld->enabled_algorithms_bitset =
diff --git a/src/core/ext/filters/http/server/http_server_filter.c b/src/core/ext/filters/http/server/http_server_filter.c
index a10e69b..554a7f5 100644
--- a/src/core/ext/filters/http/server/http_server_filter.c
+++ b/src/core/ext/filters/http/server/http_server_filter.c
@@ -94,7 +94,7 @@
 static grpc_error *server_filter_incoming_metadata(grpc_exec_ctx *exec_ctx,
                                                    grpc_call_element *elem,
                                                    grpc_metadata_batch *b) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_error *error = GRPC_ERROR_NONE;
   static const char *error_name = "Failed processing incoming headers";
 
@@ -263,8 +263,8 @@
 
 static void hs_on_recv(grpc_exec_ctx *exec_ctx, void *user_data,
                        grpc_error *err) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (err == GRPC_ERROR_NONE) {
     err = server_filter_incoming_metadata(exec_ctx, elem,
                                           calld->recv_initial_metadata);
@@ -276,8 +276,8 @@
 
 static void hs_on_complete(grpc_exec_ctx *exec_ctx, void *user_data,
                            grpc_error *err) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   /* Call recv_message_ready if we got the payload via the path field */
   if (calld->seen_path_with_query && calld->recv_message_ready != NULL) {
     *calld->pp_recv_message = calld->payload_bin_delivered
@@ -296,8 +296,8 @@
 
 static void hs_recv_message_ready(grpc_exec_ctx *exec_ctx, void *user_data,
                                   grpc_error *err) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (calld->seen_path_with_query) {
     // Do nothing. This is probably a GET request, and payload will be
     // returned in hs_on_complete callback.
@@ -314,7 +314,7 @@
                                 grpc_call_element *elem,
                                 grpc_transport_stream_op_batch *op) {
   /* grab pointers to our data from the call element */
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
 
   if (op->send_initial_metadata) {
     grpc_error *error = GRPC_ERROR_NONE;
@@ -376,7 +376,7 @@
 static void hs_start_transport_stream_op_batch(
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_transport_stream_op_batch *op) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   GPR_TIMER_BEGIN("hs_start_transport_stream_op_batch", 0);
   grpc_error *error = hs_mutate_op(exec_ctx, elem, op);
   if (error != GRPC_ERROR_NONE) {
@@ -393,7 +393,7 @@
                                   grpc_call_element *elem,
                                   const grpc_call_element_args *args) {
   /* grab pointers to our data from the call element */
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   /* initialize members */
   calld->call_combiner = args->call_combiner;
   GRPC_CLOSURE_INIT(&calld->hs_on_recv, hs_on_recv, elem,
@@ -410,7 +410,7 @@
 static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                               const grpc_call_final_info *final_info,
                               grpc_closure *ignored) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_slice_buffer_destroy_internal(exec_ctx, &calld->read_slice_buffer);
 }
 
diff --git a/src/core/ext/filters/load_reporting/load_reporting.c b/src/core/ext/filters/load_reporting/load_reporting.c
index b42aa99..f17c942 100644
--- a/src/core/ext/filters/load_reporting/load_reporting.c
+++ b/src/core/ext/filters/load_reporting/load_reporting.c
@@ -42,7 +42,7 @@
                                             void *arg) {
   const grpc_channel_args *args =
       grpc_channel_stack_builder_get_channel_arguments(builder);
-  const grpc_channel_filter *filter = arg;
+  const grpc_channel_filter *filter = (const grpc_channel_filter *)arg;
   grpc_channel_stack_builder_iterator *it =
       grpc_channel_stack_builder_iterator_find(builder, filter->name);
   const bool already_has_load_reporting_filter =
diff --git a/src/core/ext/filters/load_reporting/load_reporting_filter.c b/src/core/ext/filters/load_reporting/load_reporting_filter.c
index 17e9469..908e7c2 100644
--- a/src/core/ext/filters/load_reporting/load_reporting_filter.c
+++ b/src/core/ext/filters/load_reporting/load_reporting_filter.c
@@ -56,8 +56,8 @@
 
 static void on_initial_md_ready(grpc_exec_ctx *exec_ctx, void *user_data,
                                 grpc_error *err) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
 
   if (err == GRPC_ERROR_NONE) {
     if (calld->recv_initial_metadata->idx.named.path != NULL) {
@@ -88,7 +88,7 @@
 static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
                                   grpc_call_element *elem,
                                   const grpc_call_element_args *args) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   calld->id = (intptr_t)args->call_stack;
   GRPC_CLOSURE_INIT(&calld->on_initial_md_ready, on_initial_md_ready, elem,
                     grpc_schedule_on_exec_ctx);
@@ -111,7 +111,7 @@
 static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                               const grpc_call_final_info *final_info,
                               grpc_closure *ignored) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
 
   /* TODO(dgq): do something with the data
   channel_data *chand = elem->channel_data;
@@ -141,7 +141,7 @@
                                      grpc_channel_element_args *args) {
   GPR_ASSERT(!args->is_last);
 
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   chand->id = (intptr_t)args->channel_stack;
 
   /* TODO(dgq): do something with the data
@@ -176,8 +176,8 @@
 static grpc_filtered_mdelem lr_trailing_md_filter(grpc_exec_ctx *exec_ctx,
                                                   void *user_data,
                                                   grpc_mdelem md) {
-  grpc_call_element *elem = user_data;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)user_data;
+  call_data *calld = (call_data *)elem->call_data;
   if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_LB_COST_BIN)) {
     calld->trailing_md_string = GRPC_MDVALUE(md);
     return GRPC_FILTERED_REMOVE();
@@ -189,7 +189,7 @@
     grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
     grpc_transport_stream_op_batch *op) {
   GPR_TIMER_BEGIN("lr_start_transport_stream_op_batch", 0);
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
 
   if (op->recv_initial_metadata) {
     /* substitute our callback for the higher callback */
diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.c b/src/core/ext/transport/chttp2/client/chttp2_connector.c
index 983691b..0ec9353 100644
--- a/src/core/ext/transport/chttp2/client/chttp2_connector.c
+++ b/src/core/ext/transport/chttp2/client/chttp2_connector.c
@@ -93,8 +93,8 @@
 
 static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
                               grpc_error *error) {
-  grpc_handshaker_args *args = arg;
-  chttp2_connector *c = args->user_data;
+  grpc_handshaker_args *args = (grpc_handshaker_args *)arg;
+  chttp2_connector *c = (chttp2_connector *)args->user_data;
   gpr_mu_lock(&c->mu);
   if (error != GRPC_ERROR_NONE || c->shutdown) {
     if (error == GRPC_ERROR_NONE) {
@@ -143,7 +143,7 @@
 }
 
 static void connected(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  chttp2_connector *c = arg;
+  chttp2_connector *c = (chttp2_connector *)arg;
   gpr_mu_lock(&c->mu);
   GPR_ASSERT(c->connecting);
   c->connecting = false;
@@ -198,7 +198,7 @@
     chttp2_connector_connect};
 
 grpc_connector *grpc_chttp2_connector_create() {
-  chttp2_connector *c = gpr_zalloc(sizeof(*c));
+  chttp2_connector *c = (chttp2_connector *)gpr_zalloc(sizeof(*c));
   c->base.vtable = &chttp2_connector_vtable;
   gpr_mu_init(&c->mu);
   gpr_ref_init(&c->refs, 1);
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.c b/src/core/ext/transport/chttp2/server/chttp2_server.c
index f207155..d7add05 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.c
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.c
@@ -60,8 +60,9 @@
 
 static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
                               grpc_error *error) {
-  grpc_handshaker_args *args = arg;
-  server_connection_state *connection_state = args->user_data;
+  grpc_handshaker_args *args = (grpc_handshaker_args *)arg;
+  server_connection_state *connection_state =
+      (server_connection_state *)args->user_data;
   gpr_mu_lock(&connection_state->server_state->mu);
   if (error != GRPC_ERROR_NONE || connection_state->server_state->shutdown) {
     const char *error_str = grpc_error_string(error);
@@ -108,7 +109,7 @@
 static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
                       grpc_pollset *accepting_pollset,
                       grpc_tcp_server_acceptor *acceptor) {
-  server_state *state = arg;
+  server_state *state = (server_state *)arg;
   gpr_mu_lock(&state->mu);
   if (state->shutdown) {
     gpr_mu_unlock(&state->mu);
@@ -143,7 +144,7 @@
 static void server_start_listener(grpc_exec_ctx *exec_ctx, grpc_server *server,
                                   void *arg, grpc_pollset **pollsets,
                                   size_t pollset_count) {
-  server_state *state = arg;
+  server_state *state = (server_state *)arg;
   gpr_mu_lock(&state->mu);
   state->shutdown = false;
   gpr_mu_unlock(&state->mu);
@@ -153,7 +154,7 @@
 
 static void tcp_server_shutdown_complete(grpc_exec_ctx *exec_ctx, void *arg,
                                          grpc_error *error) {
-  server_state *state = arg;
+  server_state *state = (server_state *)arg;
   /* ensure all threads have unlocked */
   gpr_mu_lock(&state->mu);
   grpc_closure *destroy_done = state->server_destroy_listener_done;
@@ -178,7 +179,7 @@
 static void server_destroy_listener(grpc_exec_ctx *exec_ctx,
                                     grpc_server *server, void *arg,
                                     grpc_closure *destroy_done) {
-  server_state *state = arg;
+  server_state *state = (server_state *)arg;
   gpr_mu_lock(&state->mu);
   state->shutdown = true;
   state->server_destroy_listener_done = destroy_done;
@@ -208,7 +209,7 @@
   if (err != GRPC_ERROR_NONE) {
     goto error;
   }
-  state = gpr_zalloc(sizeof(*state));
+  state = (server_state *)gpr_zalloc(sizeof(*state));
   GRPC_CLOSURE_INIT(&state->tcp_server_shutdown_complete,
                     tcp_server_shutdown_complete, state,
                     grpc_schedule_on_exec_ctx);
@@ -225,7 +226,7 @@
   gpr_mu_init(&state->mu);
 
   const size_t naddrs = resolved->naddrs;
-  errors = gpr_malloc(sizeof(*errors) * naddrs);
+  errors = (grpc_error **)gpr_malloc(sizeof(*errors) * naddrs);
   for (i = 0; i < naddrs; i++) {
     errors[i] =
         grpc_tcp_server_add_port(tcp_server, &resolved->addrs[i], &port_temp);
diff --git a/src/core/ext/transport/chttp2/transport/frame_goaway.c b/src/core/ext/transport/chttp2/transport/frame_goaway.c
index 4bce84f..78ec08e 100644
--- a/src/core/ext/transport/chttp2/transport/frame_goaway.c
+++ b/src/core/ext/transport/chttp2/transport/frame_goaway.c
@@ -46,7 +46,7 @@
 
   gpr_free(p->debug_data);
   p->debug_length = length - 8;
-  p->debug_data = gpr_malloc(p->debug_length);
+  p->debug_data = (char *)gpr_malloc(p->debug_length);
   p->debug_pos = 0;
   p->state = GRPC_CHTTP2_GOAWAY_LSI0;
   return GRPC_ERROR_NONE;
@@ -60,7 +60,7 @@
   uint8_t *const beg = GRPC_SLICE_START_PTR(slice);
   uint8_t *const end = GRPC_SLICE_END_PTR(slice);
   uint8_t *cur = beg;
-  grpc_chttp2_goaway_parser *p = parser;
+  grpc_chttp2_goaway_parser *p = (grpc_chttp2_goaway_parser *)parser;
 
   switch (p->state) {
     case GRPC_CHTTP2_GOAWAY_LSI0:
diff --git a/src/core/ext/transport/chttp2/transport/frame_ping.c b/src/core/ext/transport/chttp2/transport/frame_ping.c
index 3d7c6fb..582fd7b 100644
--- a/src/core/ext/transport/chttp2/transport/frame_ping.c
+++ b/src/core/ext/transport/chttp2/transport/frame_ping.c
@@ -75,7 +75,7 @@
   uint8_t *const beg = GRPC_SLICE_START_PTR(slice);
   uint8_t *const end = GRPC_SLICE_END_PTR(slice);
   uint8_t *cur = beg;
-  grpc_chttp2_ping_parser *p = parser;
+  grpc_chttp2_ping_parser *p = (grpc_chttp2_ping_parser *)parser;
 
   while (p->byte != 8 && cur != end) {
     p->opaque_8bytes |= (((uint64_t)*cur) << (56 - 8 * p->byte));
@@ -113,7 +113,7 @@
       if (!g_disable_ping_ack) {
         if (t->ping_ack_count == t->ping_ack_capacity) {
           t->ping_ack_capacity = GPR_MAX(t->ping_ack_capacity * 3 / 2, 3);
-          t->ping_acks = gpr_realloc(
+          t->ping_acks = (uint64_t *)gpr_realloc(
               t->ping_acks, t->ping_ack_capacity * sizeof(*t->ping_acks));
         }
         t->ping_acks[t->ping_ack_count++] = p->opaque_8bytes;
diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
index 689dc89..0133b6e 100644
--- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
+++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.c
@@ -77,7 +77,7 @@
   uint8_t *const beg = GRPC_SLICE_START_PTR(slice);
   uint8_t *const end = GRPC_SLICE_END_PTR(slice);
   uint8_t *cur = beg;
-  grpc_chttp2_rst_stream_parser *p = parser;
+  grpc_chttp2_rst_stream_parser *p = (grpc_chttp2_rst_stream_parser *)parser;
 
   while (p->byte != 4 && cur != end) {
     p->reason_bytes[p->byte] = *cur;
diff --git a/src/core/ext/transport/chttp2/transport/frame_settings.c b/src/core/ext/transport/chttp2/transport/frame_settings.c
index 057d3d9..806100a 100644
--- a/src/core/ext/transport/chttp2/transport/frame_settings.c
+++ b/src/core/ext/transport/chttp2/transport/frame_settings.c
@@ -111,7 +111,7 @@
                                               grpc_chttp2_transport *t,
                                               grpc_chttp2_stream *s,
                                               grpc_slice slice, int is_last) {
-  grpc_chttp2_settings_parser *parser = p;
+  grpc_chttp2_settings_parser *parser = (grpc_chttp2_settings_parser *)p;
   const uint8_t *cur = GRPC_SLICE_START_PTR(slice);
   const uint8_t *end = GRPC_SLICE_END_PTR(slice);
   char *msg;
diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.c b/src/core/ext/transport/chttp2/transport/frame_window_update.c
index 65f3b01..dc16609 100644
--- a/src/core/ext/transport/chttp2/transport/frame_window_update.c
+++ b/src/core/ext/transport/chttp2/transport/frame_window_update.c
@@ -70,7 +70,8 @@
   uint8_t *const beg = GRPC_SLICE_START_PTR(slice);
   uint8_t *const end = GRPC_SLICE_END_PTR(slice);
   uint8_t *cur = beg;
-  grpc_chttp2_window_update_parser *p = parser;
+  grpc_chttp2_window_update_parser *p =
+      (grpc_chttp2_window_update_parser *)parser;
 
   while (p->byte != 4 && cur != end) {
     p->amount |= ((uint32_t)*cur) << (8 * (3 - p->byte));
diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.c b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
index a0e748e..3cd1a7e 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_encoder.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
@@ -536,7 +536,7 @@
   c->max_table_elems = c->cap_table_elems;
   c->max_usable_size = GRPC_CHTTP2_HPACKC_INITIAL_TABLE_SIZE;
   c->table_elem_size =
-      gpr_malloc(sizeof(*c->table_elem_size) * c->cap_table_elems);
+      (uint16_t *)gpr_malloc(sizeof(*c->table_elem_size) * c->cap_table_elems);
   memset(c->table_elem_size, 0,
          sizeof(*c->table_elem_size) * c->cap_table_elems);
   for (size_t i = 0; i < GPR_ARRAY_SIZE(c->entries_keys); i++) {
@@ -564,7 +564,8 @@
 }
 
 static void rebuild_elems(grpc_chttp2_hpack_compressor *c, uint32_t new_cap) {
-  uint16_t *table_elem_size = gpr_malloc(sizeof(*table_elem_size) * new_cap);
+  uint16_t *table_elem_size =
+      (uint16_t *)gpr_malloc(sizeof(*table_elem_size) * new_cap);
   uint32_t i;
 
   memset(table_elem_size, 0, sizeof(*table_elem_size) * new_cap);
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.c b/src/core/ext/transport/chttp2/transport/hpack_parser.c
index c21d76b..82ff2c8 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.c
@@ -1284,7 +1284,7 @@
     GPR_ASSERT(str->data.copied.length + length <= UINT32_MAX);
     str->data.copied.capacity = (uint32_t)(str->data.copied.length + length);
     str->data.copied.str =
-        gpr_realloc(str->data.copied.str, str->data.copied.capacity);
+        (char *)gpr_realloc(str->data.copied.str, str->data.copied.capacity);
   }
   memcpy(str->data.copied.str + str->data.copied.length, data, length);
   GPR_ASSERT(length <= UINT32_MAX - str->data.copied.length);
@@ -1643,7 +1643,7 @@
 
 static void force_client_rst_stream(grpc_exec_ctx *exec_ctx, void *sp,
                                     grpc_error *error) {
-  grpc_chttp2_stream *s = sp;
+  grpc_chttp2_stream *s = (grpc_chttp2_stream *)sp;
   grpc_chttp2_transport *t = s->t;
   if (!s->write_closed) {
     grpc_slice_buffer_add(
@@ -1665,7 +1665,8 @@
     if (!grpc_slice_eq(content_encoding, GRPC_MDSTR_IDENTITY)) {
       if (grpc_slice_eq(content_encoding, GRPC_MDSTR_GZIP)) {
         s->stream_compression_recv_enabled = true;
-        s->decompressed_data_buffer = gpr_malloc(sizeof(grpc_slice_buffer));
+        s->decompressed_data_buffer =
+            (grpc_slice_buffer *)gpr_malloc(sizeof(grpc_slice_buffer));
         grpc_slice_buffer_init(s->decompressed_data_buffer);
       }
     }
@@ -1677,7 +1678,7 @@
                                             grpc_chttp2_transport *t,
                                             grpc_chttp2_stream *s,
                                             grpc_slice slice, int is_last) {
-  grpc_chttp2_hpack_parser *parser = hpack_parser;
+  grpc_chttp2_hpack_parser *parser = (grpc_chttp2_hpack_parser *)hpack_parser;
   GPR_TIMER_BEGIN("grpc_chttp2_hpack_parser_parse", 0);
   if (s != NULL) {
     s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice);
diff --git a/src/core/ext/transport/chttp2/transport/hpack_table.c b/src/core/ext/transport/chttp2/transport/hpack_table.c
index 944d778..bbd135a 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_table.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_table.c
@@ -173,7 +173,7 @@
       GRPC_CHTTP2_INITIAL_HPACK_TABLE_SIZE;
   tbl->max_entries = tbl->cap_entries =
       entries_for_bytes(tbl->current_table_bytes);
-  tbl->ents = gpr_malloc(sizeof(*tbl->ents) * tbl->cap_entries);
+  tbl->ents = (grpc_mdelem *)gpr_malloc(sizeof(*tbl->ents) * tbl->cap_entries);
   memset(tbl->ents, 0, sizeof(*tbl->ents) * tbl->cap_entries);
   for (i = 1; i <= GRPC_CHTTP2_LAST_STATIC_ENTRY; i++) {
     tbl->static_ents[i - 1] = grpc_mdelem_from_slices(
@@ -228,7 +228,7 @@
 }
 
 static void rebuild_ents(grpc_chttp2_hptbl *tbl, uint32_t new_cap) {
-  grpc_mdelem *ents = gpr_malloc(sizeof(*ents) * new_cap);
+  grpc_mdelem *ents = (grpc_mdelem *)gpr_malloc(sizeof(*ents) * new_cap);
   uint32_t i;
 
   for (i = 0; i < tbl->num_ents; i++) {
diff --git a/src/core/ext/transport/chttp2/transport/parsing.c b/src/core/ext/transport/chttp2/transport/parsing.c
index 19bd86f..148d649 100644
--- a/src/core/ext/transport/chttp2/transport/parsing.c
+++ b/src/core/ext/transport/chttp2/transport/parsing.c
@@ -402,7 +402,7 @@
 
 static void on_initial_header(grpc_exec_ctx *exec_ctx, void *tp,
                               grpc_mdelem md) {
-  grpc_chttp2_transport *t = tp;
+  grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp;
   grpc_chttp2_stream *s = t->incoming_stream;
 
   GPR_TIMER_BEGIN("on_initial_header", 0);
@@ -426,11 +426,12 @@
   }
 
   if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_GRPC_TIMEOUT)) {
-    gpr_timespec *cached_timeout = grpc_mdelem_get_user_data(md, free_timeout);
+    gpr_timespec *cached_timeout =
+        (gpr_timespec *)grpc_mdelem_get_user_data(md, free_timeout);
     gpr_timespec timeout;
     if (cached_timeout == NULL) {
       /* not already parsed: parse it now, and store the result away */
-      cached_timeout = gpr_malloc(sizeof(gpr_timespec));
+      cached_timeout = (gpr_timespec *)gpr_malloc(sizeof(gpr_timespec));
       if (!grpc_http2_decode_timeout(GRPC_MDVALUE(md), cached_timeout)) {
         char *val = grpc_slice_to_c_string(GRPC_MDVALUE(md));
         gpr_log(GPR_ERROR, "Ignoring bad timeout value '%s'", val);
@@ -482,7 +483,7 @@
 
 static void on_trailing_header(grpc_exec_ctx *exec_ctx, void *tp,
                                grpc_mdelem md) {
-  grpc_chttp2_transport *t = tp;
+  grpc_chttp2_transport *t = (grpc_chttp2_transport *)tp;
   grpc_chttp2_stream *s = t->incoming_stream;
 
   GPR_TIMER_BEGIN("on_trailing_header", 0);
diff --git a/src/core/ext/transport/chttp2/transport/stream_map.c b/src/core/ext/transport/chttp2/transport/stream_map.c
index e2f10bc..650090d 100644
--- a/src/core/ext/transport/chttp2/transport/stream_map.c
+++ b/src/core/ext/transport/chttp2/transport/stream_map.c
@@ -27,8 +27,8 @@
 void grpc_chttp2_stream_map_init(grpc_chttp2_stream_map *map,
                                  size_t initial_capacity) {
   GPR_ASSERT(initial_capacity > 1);
-  map->keys = gpr_malloc(sizeof(uint32_t) * initial_capacity);
-  map->values = gpr_malloc(sizeof(void *) * initial_capacity);
+  map->keys = (uint32_t *)gpr_malloc(sizeof(uint32_t) * initial_capacity);
+  map->values = (void **)gpr_malloc(sizeof(void *) * initial_capacity);
   map->count = 0;
   map->free = 0;
   map->capacity = initial_capacity;
diff --git a/src/core/ext/transport/inproc/inproc_transport.c b/src/core/ext/transport/inproc/inproc_transport.c
index b2d6f2d..036853a 100644
--- a/src/core/ext/transport/inproc/inproc_transport.c
+++ b/src/core/ext/transport/inproc/inproc_transport.c
@@ -120,7 +120,7 @@
 }
 
 static grpc_slice_buffer *slice_buffer_list_append(slice_buffer_list *l) {
-  sb_list_entry *next = gpr_malloc(sizeof(*next));
+  sb_list_entry *next = (sb_list_entry *)gpr_malloc(sizeof(*next));
   grpc_slice_buffer_init(&next->sb);
   slice_buffer_list_append_entry(l, next);
   return &next->sb;
@@ -327,7 +327,8 @@
   grpc_error *error = GRPC_ERROR_NONE;
   for (grpc_linked_mdelem *elem = metadata->list.head;
        (elem != NULL) && (error == GRPC_ERROR_NONE); elem = elem->next) {
-    grpc_linked_mdelem *nelem = gpr_arena_alloc(s->arena, sizeof(*nelem));
+    grpc_linked_mdelem *nelem =
+        (grpc_linked_mdelem *)gpr_arena_alloc(s->arena, sizeof(*nelem));
     nelem->md = grpc_mdelem_from_slices(
         exec_ctx, grpc_slice_intern(GRPC_MDKEY(elem->md)),
         grpc_slice_intern(GRPC_MDVALUE(elem->md)));
@@ -531,12 +532,14 @@
       // since it expects that as well as no error yet
       grpc_metadata_batch fake_md;
       grpc_metadata_batch_init(&fake_md);
-      grpc_linked_mdelem *path_md = gpr_arena_alloc(s->arena, sizeof(*path_md));
+      grpc_linked_mdelem *path_md =
+          (grpc_linked_mdelem *)gpr_arena_alloc(s->arena, sizeof(*path_md));
       path_md->md =
           grpc_mdelem_from_slices(exec_ctx, g_fake_path_key, g_fake_path_value);
       GPR_ASSERT(grpc_metadata_batch_link_tail(exec_ctx, &fake_md, path_md) ==
                  GRPC_ERROR_NONE);
-      grpc_linked_mdelem *auth_md = gpr_arena_alloc(s->arena, sizeof(*auth_md));
+      grpc_linked_mdelem *auth_md =
+          (grpc_linked_mdelem *)gpr_arena_alloc(s->arena, sizeof(*auth_md));
       auth_md->md =
           grpc_mdelem_from_slices(exec_ctx, g_fake_auth_key, g_fake_auth_value);
       GPR_ASSERT(grpc_metadata_batch_link_tail(exec_ctx, &fake_md, auth_md) ==
@@ -1172,8 +1175,8 @@
                                      grpc_transport **client_transport,
                                      const grpc_channel_args *client_args) {
   INPROC_LOG(GPR_DEBUG, "inproc_transports_create");
-  inproc_transport *st = gpr_zalloc(sizeof(*st));
-  inproc_transport *ct = gpr_zalloc(sizeof(*ct));
+  inproc_transport *st = (inproc_transport *)gpr_zalloc(sizeof(*st));
+  inproc_transport *ct = (inproc_transport *)gpr_zalloc(sizeof(*ct));
   // Share one lock between both sides since both sides get affected
   st->mu = ct->mu = gpr_malloc(sizeof(*st->mu));
   gpr_mu_init(&st->mu->mu);
diff --git a/src/core/lib/channel/channel_stack_builder.c b/src/core/lib/channel/channel_stack_builder.c
index 7f2b8e0..2c991ea 100644
--- a/src/core/lib/channel/channel_stack_builder.c
+++ b/src/core/lib/channel/channel_stack_builder.c
@@ -212,7 +212,7 @@
 static void add_after(filter_node *before, const grpc_channel_filter *filter,
                       grpc_post_filter_create_init_func post_init_func,
                       void *user_data) {
-  filter_node *new = gpr_malloc(sizeof(*new));
+  filter_node *new = (filter_node *)gpr_malloc(sizeof(*new));
   new->next = before->next;
   new->prev = before;
   new->next->prev = new->prev->next = new;
diff --git a/src/core/lib/debug/trace.c b/src/core/lib/debug/trace.c
index c6c1853..7cb2789 100644
--- a/src/core/lib/debug/trace.c
+++ b/src/core/lib/debug/trace.c
@@ -39,7 +39,7 @@
 #endif
 
 void grpc_register_tracer(grpc_tracer_flag *flag) {
-  tracer *t = gpr_malloc(sizeof(*t));
+  tracer *t = (tracer *)gpr_malloc(sizeof(*t));
   t->flag = flag;
   t->next = tracers;
   TRACER_SET(*flag, false);
@@ -53,10 +53,10 @@
   size_t len;
   GPR_ASSERT(end >= beg);
   len = (size_t)(end - beg);
-  s = gpr_malloc(len + 1);
+  s = (char *)gpr_malloc(len + 1);
   memcpy(s, beg, len);
   s[len] = 0;
-  *ss = gpr_realloc(*ss, sizeof(char **) * np);
+  *ss = (char **)gpr_realloc(*ss, sizeof(char **) * np);
   (*ss)[n] = s;
   *ns = np;
 }
diff --git a/src/core/lib/iomgr/combiner.c b/src/core/lib/iomgr/combiner.c
index 4c1503b..3d42f6d 100644
--- a/src/core/lib/iomgr/combiner.c
+++ b/src/core/lib/iomgr/combiner.c
@@ -74,7 +74,7 @@
 static void offload(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error);
 
 grpc_combiner *grpc_combiner_create(void) {
-  grpc_combiner *lock = gpr_zalloc(sizeof(*lock));
+  grpc_combiner *lock = (grpc_combiner *)gpr_zalloc(sizeof(*lock));
   gpr_ref_init(&lock->refs, 1);
   lock->scheduler.vtable = &scheduler;
   lock->finally_scheduler.vtable = &finally_scheduler;
@@ -193,7 +193,7 @@
 }
 
 static void offload(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_combiner *lock = arg;
+  grpc_combiner *lock = (grpc_combiner *)arg;
   push_last_on_exec_ctx(exec_ctx, lock);
 }
 
diff --git a/src/core/lib/iomgr/ev_epollex_linux.c b/src/core/lib/iomgr/ev_epollex_linux.c
index 0e42f76..277347a 100644
--- a/src/core/lib/iomgr/ev_epollex_linux.c
+++ b/src/core/lib/iomgr/ev_epollex_linux.c
@@ -279,7 +279,7 @@
 }
 
 static void fd_destroy(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_fd *fd = arg;
+  grpc_fd *fd = (grpc_fd *)arg;
   /* Add the fd to the freelist */
   grpc_iomgr_unregister_object(&fd->iomgr_object);
   pollable_destroy(&fd->pollable);
@@ -340,7 +340,7 @@
   gpr_mu_unlock(&fd_freelist_mu);
 
   if (new_fd == NULL) {
-    new_fd = gpr_malloc(sizeof(grpc_fd));
+    new_fd = (grpc_fd *)gpr_malloc(sizeof(grpc_fd));
   }
 
   pollable_init(&new_fd->pollable, PO_FD);
@@ -556,7 +556,7 @@
 static void do_kick_all(grpc_exec_ctx *exec_ctx, void *arg,
                         grpc_error *error_unused) {
   grpc_error *error = GRPC_ERROR_NONE;
-  grpc_pollset *pollset = arg;
+  grpc_pollset *pollset = (grpc_pollset *)arg;
   gpr_mu_lock(&pollset->pollable.po.mu);
   if (pollset->root_worker != NULL) {
     grpc_pollset_worker *worker = pollset->root_worker;
@@ -1012,7 +1012,7 @@
 
 static void unref_fd_no_longer_poller(grpc_exec_ctx *exec_ctx, void *arg,
                                       grpc_error *error) {
-  grpc_fd *fd = arg;
+  grpc_fd *fd = (grpc_fd *)arg;
   UNREF_BY(exec_ctx, fd, 2, "pollset_pollable");
 }
 
@@ -1081,7 +1081,7 @@
  */
 
 static grpc_pollset_set *pollset_set_create(void) {
-  grpc_pollset_set *pss = gpr_zalloc(sizeof(*pss));
+  grpc_pollset_set *pss = (grpc_pollset_set *)gpr_zalloc(sizeof(*pss));
   po_init(&pss->po, PO_POLLSET_SET);
   return pss;
 }
@@ -1243,7 +1243,7 @@
 static void pg_create(grpc_exec_ctx *exec_ctx, polling_obj **initial_po,
                       size_t initial_po_count) {
   /* assumes all polling objects in initial_po are locked */
-  polling_group *pg = gpr_malloc(sizeof(*pg));
+  polling_group *pg = (polling_group *)gpr_malloc(sizeof(*pg));
   po_init(&pg->po, PO_POLLING_GROUP);
   gpr_ref_init(&pg->refs, (int)initial_po_count);
   for (size_t i = 0; i < initial_po_count; i++) {
@@ -1353,7 +1353,7 @@
     gpr_mu_lock(&po->mu);
     if (unref_count == unref_cap) {
       unref_cap = GPR_MAX(8, 3 * unref_cap / 2);
-      unref = gpr_realloc(unref, unref_cap * sizeof(*unref));
+      unref = (polling_group **)gpr_realloc(unref, unref_cap * sizeof(*unref));
     }
     unref[unref_count++] = po->group;
     po->group = pg_ref(a);
diff --git a/src/core/lib/iomgr/ev_epollsig_linux.c b/src/core/lib/iomgr/ev_epollsig_linux.c
index 59c7cdc..b88c3ba 100644
--- a/src/core/lib/iomgr/ev_epollsig_linux.c
+++ b/src/core/lib/iomgr/ev_epollsig_linux.c
@@ -363,7 +363,8 @@
 
     if (pi->fd_cnt == pi->fd_capacity) {
       pi->fd_capacity = GPR_MAX(pi->fd_capacity + 8, pi->fd_cnt * 3 / 2);
-      pi->fds = gpr_realloc(pi->fds, sizeof(grpc_fd *) * pi->fd_capacity);
+      pi->fds =
+          (grpc_fd **)gpr_realloc(pi->fds, sizeof(grpc_fd *) * pi->fd_capacity);
     }
 
     pi->fds[pi->fd_cnt++] = fds[i];
@@ -466,7 +467,7 @@
 
   *error = GRPC_ERROR_NONE;
 
-  pi = gpr_malloc(sizeof(*pi));
+  pi = (polling_island *)gpr_malloc(sizeof(*pi));
   gpr_mu_init(&pi->mu);
   pi->fd_cnt = 0;
   pi->fd_capacity = 0;
@@ -810,7 +811,7 @@
   gpr_mu_unlock(&fd_freelist_mu);
 
   if (new_fd == NULL) {
-    new_fd = gpr_malloc(sizeof(grpc_fd));
+    new_fd = (grpc_fd *)gpr_malloc(sizeof(grpc_fd));
     gpr_mu_init(&new_fd->po.mu);
   }
 
@@ -1273,7 +1274,7 @@
          to the function pollset_work_and_unlock() will pick up the correct
          epoll_fd */
     } else {
-      grpc_fd *fd = data_ptr;
+      grpc_fd *fd = (grpc_fd *)data_ptr;
       int cancel = ep_ev[i].events & (EPOLLERR | EPOLLHUP);
       int read_ev = ep_ev[i].events & (EPOLLIN | EPOLLPRI);
       int write_ev = ep_ev[i].events & EPOLLOUT;
@@ -1569,7 +1570,7 @@
  */
 
 static grpc_pollset_set *pollset_set_create(void) {
-  grpc_pollset_set *pss = gpr_malloc(sizeof(*pss));
+  grpc_pollset_set *pss = (grpc_pollset_set *)gpr_malloc(sizeof(*pss));
   gpr_mu_init(&pss->po.mu);
   pss->po.pi = NULL;
 #ifndef NDEBUG
@@ -1647,8 +1648,8 @@
 }
 
 bool grpc_are_polling_islands_equal(void *p, void *q) {
-  polling_island *p1 = p;
-  polling_island *p2 = q;
+  polling_island *p1 = (polling_island *)p;
+  polling_island *p2 = (polling_island *)q;
 
   /* Note: polling_island_lock_pair() may change p1 and p2 to point to the
      latest polling islands in their respective linked lists */
diff --git a/src/core/lib/iomgr/ev_poll_posix.c b/src/core/lib/iomgr/ev_poll_posix.c
index fbd265f..6a083f8 100644
--- a/src/core/lib/iomgr/ev_poll_posix.c
+++ b/src/core/lib/iomgr/ev_poll_posix.c
@@ -327,7 +327,7 @@
 }
 
 static grpc_fd *fd_create(int fd, const char *name) {
-  grpc_fd *r = gpr_malloc(sizeof(*r));
+  grpc_fd *r = (grpc_fd *)gpr_malloc(sizeof(*r));
   gpr_mu_init(&r->mu);
   gpr_atm_rel_store(&r->refst, 1);
   r->shutdown = 0;
@@ -842,8 +842,8 @@
   if (pollset->fd_count == pollset->fd_capacity) {
     pollset->fd_capacity =
         GPR_MAX(pollset->fd_capacity + 8, pollset->fd_count * 3 / 2);
-    pollset->fds =
-        gpr_realloc(pollset->fds, sizeof(grpc_fd *) * pollset->fd_capacity);
+    pollset->fds = (grpc_fd **)gpr_realloc(
+        pollset->fds, sizeof(grpc_fd *) * pollset->fd_capacity);
   }
   pollset->fds[pollset->fd_count++] = fd;
   GRPC_FD_REF(fd, "multipoller");
@@ -895,7 +895,8 @@
     worker.wakeup_fd = pollset->local_wakeup_cache;
     pollset->local_wakeup_cache = worker.wakeup_fd->next;
   } else {
-    worker.wakeup_fd = gpr_malloc(sizeof(*worker.wakeup_fd));
+    worker.wakeup_fd =
+        (grpc_cached_wakeup_fd *)gpr_malloc(sizeof(*worker.wakeup_fd));
     error = grpc_wakeup_fd_init(&worker.wakeup_fd->fd);
     if (error != GRPC_ERROR_NONE) {
       GRPC_LOG_IF_ERROR("pollset_work", GRPC_ERROR_REF(error));
@@ -950,8 +951,8 @@
         const size_t pfd_size = sizeof(*pfds) * (pollset->fd_count + 2);
         const size_t watch_size = sizeof(*watchers) * (pollset->fd_count + 2);
         void *buf = gpr_malloc(pfd_size + watch_size);
-        pfds = buf;
-        watchers = (void *)((char *)buf + pfd_size);
+        pfds = (struct pollfd *)buf;
+        watchers = (grpc_fd_watcher *)(void *)((char *)buf + pfd_size);
       }
 
       fd_count = 0;
@@ -1131,7 +1132,8 @@
  */
 
 static grpc_pollset_set *pollset_set_create(void) {
-  grpc_pollset_set *pollset_set = gpr_zalloc(sizeof(*pollset_set));
+  grpc_pollset_set *pollset_set =
+      (grpc_pollset_set *)gpr_zalloc(sizeof(*pollset_set));
   gpr_mu_init(&pollset_set->mu);
   return pollset_set;
 }
@@ -1174,9 +1176,9 @@
   if (pollset_set->pollset_count == pollset_set->pollset_capacity) {
     pollset_set->pollset_capacity =
         GPR_MAX(8, 2 * pollset_set->pollset_capacity);
-    pollset_set->pollsets =
-        gpr_realloc(pollset_set->pollsets, pollset_set->pollset_capacity *
-                                               sizeof(*pollset_set->pollsets));
+    pollset_set->pollsets = (grpc_pollset **)gpr_realloc(
+        pollset_set->pollsets,
+        pollset_set->pollset_capacity * sizeof(*pollset_set->pollsets));
   }
   pollset_set->pollsets[pollset_set->pollset_count++] = pollset;
   for (i = 0, j = 0; i < pollset_set->fd_count; i++) {
@@ -1225,9 +1227,9 @@
   gpr_mu_lock(&bag->mu);
   if (bag->pollset_set_count == bag->pollset_set_capacity) {
     bag->pollset_set_capacity = GPR_MAX(8, 2 * bag->pollset_set_capacity);
-    bag->pollset_sets =
-        gpr_realloc(bag->pollset_sets,
-                    bag->pollset_set_capacity * sizeof(*bag->pollset_sets));
+    bag->pollset_sets = (grpc_pollset_set **)gpr_realloc(
+        bag->pollset_sets,
+        bag->pollset_set_capacity * sizeof(*bag->pollset_sets));
   }
   bag->pollset_sets[bag->pollset_set_count++] = item;
   for (i = 0, j = 0; i < bag->fd_count; i++) {
@@ -1264,7 +1266,7 @@
   gpr_mu_lock(&pollset_set->mu);
   if (pollset_set->fd_count == pollset_set->fd_capacity) {
     pollset_set->fd_capacity = GPR_MAX(8, 2 * pollset_set->fd_capacity);
-    pollset_set->fds = gpr_realloc(
+    pollset_set->fds = (grpc_fd **)gpr_realloc(
         pollset_set->fds, pollset_set->fd_capacity * sizeof(*pollset_set->fds));
   }
   GRPC_FD_REF(fd, "pollset_set");
@@ -1318,11 +1320,12 @@
 }
 
 static void init_result(poll_args *pargs) {
-  pargs->result = gpr_malloc(sizeof(poll_result));
+  pargs->result = (poll_result *)gpr_malloc(sizeof(poll_result));
   gpr_ref_init(&pargs->result->refcount, 1);
   pargs->result->watchers = NULL;
   pargs->result->watchcount = 0;
-  pargs->result->fds = gpr_malloc(sizeof(struct pollfd) * pargs->nfds);
+  pargs->result->fds =
+      (struct pollfd *)gpr_malloc(sizeof(struct pollfd) * pargs->nfds);
   memcpy(pargs->result->fds, pargs->fds, sizeof(struct pollfd) * pargs->nfds);
   pargs->result->nfds = pargs->nfds;
   pargs->result->retval = 0;
@@ -1361,7 +1364,7 @@
     return pargs;
   }
 
-  poll_args *pargs = gpr_malloc(sizeof(struct poll_args));
+  poll_args *pargs = (poll_args *)gpr_malloc(sizeof(struct poll_args));
   gpr_cv_init(&pargs->trigger);
   pargs->fds = fds;
   pargs->nfds = count;
@@ -1408,7 +1411,8 @@
     poll_args **old_active_pollers = poll_cache.active_pollers;
     poll_cache.size = poll_cache.size * 2;
     poll_cache.count = 0;
-    poll_cache.active_pollers = gpr_malloc(sizeof(void *) * poll_cache.size);
+    poll_cache.active_pollers =
+        (poll_args **)gpr_malloc(sizeof(void *) * poll_cache.size);
     for (unsigned int i = 0; i < poll_cache.size; i++) {
       poll_cache.active_pollers[i] = NULL;
     }
@@ -1513,12 +1517,12 @@
   nfds_t nsockfds = 0;
   poll_result *result = NULL;
   gpr_mu_lock(&g_cvfds.mu);
-  pollcv = gpr_malloc(sizeof(cv_node));
+  pollcv = (cv_node *)gpr_malloc(sizeof(cv_node));
   pollcv->next = NULL;
   gpr_cv pollcv_cv;
   gpr_cv_init(&pollcv_cv);
   pollcv->cv = &pollcv_cv;
-  cv_node *fd_cvs = gpr_malloc(nfds * sizeof(cv_node));
+  cv_node *fd_cvs = (cv_node *)gpr_malloc(nfds * sizeof(cv_node));
 
   for (i = 0; i < nfds; i++) {
     fds[i].revents = 0;
@@ -1550,7 +1554,8 @@
 
   res = 0;
   if (!skip_poll && nsockfds > 0) {
-    struct pollfd *pollfds = gpr_malloc(sizeof(struct pollfd) * nsockfds);
+    struct pollfd *pollfds =
+        (struct pollfd *)gpr_malloc(sizeof(struct pollfd) * nsockfds);
     idx = 0;
     for (i = 0; i < nfds; i++) {
       if (fds[i].fd >= 0) {
@@ -1613,7 +1618,8 @@
   gpr_cv_init(&g_cvfds.shutdown_cv);
   gpr_ref_init(&g_cvfds.pollcount, 1);
   g_cvfds.size = CV_DEFAULT_TABLE_SIZE;
-  g_cvfds.cvfds = gpr_malloc(sizeof(fd_node) * CV_DEFAULT_TABLE_SIZE);
+  g_cvfds.cvfds =
+      (fd_node *)gpr_malloc(sizeof(fd_node) * CV_DEFAULT_TABLE_SIZE);
   g_cvfds.free_fds = NULL;
   thread_grace = gpr_time_from_millis(POLLCV_THREAD_GRACE_MS, GPR_TIMESPAN);
   for (int i = 0; i < CV_DEFAULT_TABLE_SIZE; i++) {
@@ -1630,7 +1636,7 @@
   poll_cache.size = 32;
   poll_cache.count = 0;
   poll_cache.free_pollers = NULL;
-  poll_cache.active_pollers = gpr_malloc(sizeof(void *) * 32);
+  poll_cache.active_pollers = (poll_args **)gpr_malloc(sizeof(void *) * 32);
   for (unsigned int i = 0; i < poll_cache.size; i++) {
     poll_cache.active_pollers[i] = NULL;
   }
diff --git a/src/core/lib/iomgr/ev_posix.c b/src/core/lib/iomgr/ev_posix.c
index bb43061..d881e2d 100644
--- a/src/core/lib/iomgr/ev_posix.c
+++ b/src/core/lib/iomgr/ev_posix.c
@@ -76,10 +76,10 @@
   size_t len;
   GPR_ASSERT(end >= beg);
   len = (size_t)(end - beg);
-  s = gpr_malloc(len + 1);
+  s = (char *)gpr_malloc(len + 1);
   memcpy(s, beg, len);
   s[len] = 0;
-  *ss = gpr_realloc(*ss, sizeof(char **) * np);
+  *ss = (char **)gpr_realloc(*ss, sizeof(char **) * np);
   (*ss)[n] = s;
   *ns = np;
 }
diff --git a/src/core/lib/iomgr/executor.c b/src/core/lib/iomgr/executor.c
index dd5cb2a..eb8d556 100644
--- a/src/core/lib/iomgr/executor.c
+++ b/src/core/lib/iomgr/executor.c
@@ -82,7 +82,8 @@
     g_max_threads = GPR_MAX(1, 2 * gpr_cpu_num_cores());
     gpr_atm_no_barrier_store(&g_cur_threads, 1);
     gpr_tls_init(&g_this_thread_state);
-    g_thread_state = gpr_zalloc(sizeof(thread_state) * g_max_threads);
+    g_thread_state =
+        (thread_state *)gpr_zalloc(sizeof(thread_state) * g_max_threads);
     for (size_t i = 0; i < g_max_threads; i++) {
       gpr_mu_init(&g_thread_state[i].mu);
       gpr_cv_init(&g_thread_state[i].cv);
@@ -129,7 +130,7 @@
 }
 
 static void executor_thread(void *arg) {
-  thread_state *ts = arg;
+  thread_state *ts = (thread_state *)arg;
   gpr_tls_set(&g_this_thread_state, (intptr_t)ts);
 
   grpc_exec_ctx exec_ctx =
diff --git a/src/core/lib/iomgr/load_file.c b/src/core/lib/iomgr/load_file.c
index ba77a52..0b4d41e 100644
--- a/src/core/lib/iomgr/load_file.c
+++ b/src/core/lib/iomgr/load_file.c
@@ -47,7 +47,8 @@
   /* Converting to size_t on the assumption that it will not fail */
   contents_size = (size_t)ftell(file);
   fseek(file, 0, SEEK_SET);
-  contents = gpr_malloc(contents_size + (add_null_terminator ? 1 : 0));
+  contents = (unsigned char *)gpr_malloc(contents_size +
+                                         (add_null_terminator ? 1 : 0));
   bytes_read = fread(contents, 1, contents_size, file);
   if (bytes_read < contents_size) {
     error = GRPC_OS_ERROR(errno, "fread");
diff --git a/src/core/lib/iomgr/resolve_address_posix.c b/src/core/lib/iomgr/resolve_address_posix.c
index 35dedc2..b515b8f 100644
--- a/src/core/lib/iomgr/resolve_address_posix.c
+++ b/src/core/lib/iomgr/resolve_address_posix.c
@@ -112,13 +112,14 @@
   }
 
   /* Success path: set addrs non-NULL, fill it in */
-  *addresses = gpr_malloc(sizeof(grpc_resolved_addresses));
+  *addresses =
+      (grpc_resolved_addresses *)gpr_malloc(sizeof(grpc_resolved_addresses));
   (*addresses)->naddrs = 0;
   for (resp = result; resp != NULL; resp = resp->ai_next) {
     (*addresses)->naddrs++;
   }
-  (*addresses)->addrs =
-      gpr_malloc(sizeof(grpc_resolved_address) * (*addresses)->naddrs);
+  (*addresses)->addrs = (grpc_resolved_address *)gpr_malloc(
+      sizeof(grpc_resolved_address) * (*addresses)->naddrs);
   i = 0;
   for (resp = result; resp != NULL; resp = resp->ai_next) {
     memcpy(&(*addresses)->addrs[i].addr, resp->ai_addr, resp->ai_addrlen);
@@ -153,7 +154,7 @@
  * grpc_blocking_resolve_address */
 static void do_request_thread(grpc_exec_ctx *exec_ctx, void *rp,
                               grpc_error *error) {
-  request *r = rp;
+  request *r = (request *)rp;
   GRPC_CLOSURE_SCHED(
       exec_ctx, r->on_done,
       grpc_blocking_resolve_address(r->name, r->default_port, r->addrs_out));
@@ -174,7 +175,7 @@
                                  grpc_pollset_set *interested_parties,
                                  grpc_closure *on_done,
                                  grpc_resolved_addresses **addrs) {
-  request *r = gpr_malloc(sizeof(request));
+  request *r = (request *)gpr_malloc(sizeof(request));
   GRPC_CLOSURE_INIT(&r->request_closure, do_request_thread, r,
                     grpc_executor_scheduler);
   r->name = gpr_strdup(name);
diff --git a/src/core/lib/iomgr/resource_quota.c b/src/core/lib/iomgr/resource_quota.c
index a31d9ee..6c58986 100644
--- a/src/core/lib/iomgr/resource_quota.c
+++ b/src/core/lib/iomgr/resource_quota.c
@@ -241,7 +241,7 @@
                        grpc_resource_quota *resource_quota, bool destructive);
 
 static void rq_step(grpc_exec_ctx *exec_ctx, void *rq, grpc_error *error) {
-  grpc_resource_quota *resource_quota = rq;
+  grpc_resource_quota *resource_quota = (grpc_resource_quota *)rq;
   resource_quota->step_scheduled = false;
   do {
     if (rq_alloc(exec_ctx, resource_quota)) goto done;
@@ -380,12 +380,12 @@
 } ru_slice_refcount;
 
 static void ru_slice_ref(void *p) {
-  ru_slice_refcount *rc = p;
+  ru_slice_refcount *rc = (ru_slice_refcount *)p;
   gpr_ref(&rc->refs);
 }
 
 static void ru_slice_unref(grpc_exec_ctx *exec_ctx, void *p) {
-  ru_slice_refcount *rc = p;
+  ru_slice_refcount *rc = (ru_slice_refcount *)p;
   if (gpr_unref(&rc->refs)) {
     grpc_resource_user_free(exec_ctx, rc->resource_user, rc->size);
     gpr_free(rc);
@@ -398,7 +398,8 @@
 
 static grpc_slice ru_slice_create(grpc_resource_user *resource_user,
                                   size_t size) {
-  ru_slice_refcount *rc = gpr_malloc(sizeof(ru_slice_refcount) + size);
+  ru_slice_refcount *rc =
+      (ru_slice_refcount *)gpr_malloc(sizeof(ru_slice_refcount) + size);
   rc->base.vtable = &ru_slice_vtable;
   rc->base.sub_refcount = &rc->base;
   gpr_ref_init(&rc->refs, 1);
@@ -417,7 +418,7 @@
  */
 
 static void ru_allocate(grpc_exec_ctx *exec_ctx, void *ru, grpc_error *error) {
-  grpc_resource_user *resource_user = ru;
+  grpc_resource_user *resource_user = (grpc_resource_user *)ru;
   if (rulist_empty(resource_user->resource_quota,
                    GRPC_RULIST_AWAITING_ALLOCATION)) {
     rq_step_sched(exec_ctx, resource_user->resource_quota);
@@ -427,7 +428,7 @@
 
 static void ru_add_to_free_pool(grpc_exec_ctx *exec_ctx, void *ru,
                                 grpc_error *error) {
-  grpc_resource_user *resource_user = ru;
+  grpc_resource_user *resource_user = (grpc_resource_user *)ru;
   if (!rulist_empty(resource_user->resource_quota,
                     GRPC_RULIST_AWAITING_ALLOCATION) &&
       rulist_empty(resource_user->resource_quota,
@@ -454,7 +455,7 @@
 
 static void ru_post_benign_reclaimer(grpc_exec_ctx *exec_ctx, void *ru,
                                      grpc_error *error) {
-  grpc_resource_user *resource_user = ru;
+  grpc_resource_user *resource_user = (grpc_resource_user *)ru;
   if (!ru_post_reclaimer(exec_ctx, resource_user, false)) return;
   if (!rulist_empty(resource_user->resource_quota,
                     GRPC_RULIST_AWAITING_ALLOCATION) &&
@@ -469,7 +470,7 @@
 
 static void ru_post_destructive_reclaimer(grpc_exec_ctx *exec_ctx, void *ru,
                                           grpc_error *error) {
-  grpc_resource_user *resource_user = ru;
+  grpc_resource_user *resource_user = (grpc_resource_user *)ru;
   if (!ru_post_reclaimer(exec_ctx, resource_user, true)) return;
   if (!rulist_empty(resource_user->resource_quota,
                     GRPC_RULIST_AWAITING_ALLOCATION) &&
@@ -485,7 +486,7 @@
 }
 
 static void ru_shutdown(grpc_exec_ctx *exec_ctx, void *ru, grpc_error *error) {
-  grpc_resource_user *resource_user = ru;
+  grpc_resource_user *resource_user = (grpc_resource_user *)ru;
   GRPC_CLOSURE_SCHED(exec_ctx, resource_user->reclaimers[0],
                      GRPC_ERROR_CANCELLED);
   GRPC_CLOSURE_SCHED(exec_ctx, resource_user->reclaimers[1],
@@ -497,7 +498,7 @@
 }
 
 static void ru_destroy(grpc_exec_ctx *exec_ctx, void *ru, grpc_error *error) {
-  grpc_resource_user *resource_user = ru;
+  grpc_resource_user *resource_user = (grpc_resource_user *)ru;
   GPR_ASSERT(gpr_atm_no_barrier_load(&resource_user->refs) == 0);
   for (int i = 0; i < GRPC_RULIST_COUNT; i++) {
     rulist_remove(resource_user, (grpc_rulist)i);
@@ -518,7 +519,8 @@
 
 static void ru_allocated_slices(grpc_exec_ctx *exec_ctx, void *arg,
                                 grpc_error *error) {
-  grpc_resource_user_slice_allocator *slice_allocator = arg;
+  grpc_resource_user_slice_allocator *slice_allocator =
+      (grpc_resource_user_slice_allocator *)arg;
   if (error == GRPC_ERROR_NONE) {
     for (size_t i = 0; i < slice_allocator->count; i++) {
       grpc_slice_buffer_add_indexed(
@@ -541,7 +543,7 @@
 } rq_resize_args;
 
 static void rq_resize(grpc_exec_ctx *exec_ctx, void *args, grpc_error *error) {
-  rq_resize_args *a = args;
+  rq_resize_args *a = (rq_resize_args *)args;
   int64_t delta = a->size - a->resource_quota->size;
   a->resource_quota->size += delta;
   a->resource_quota->free_pool += delta;
@@ -553,7 +555,7 @@
 
 static void rq_reclamation_done(grpc_exec_ctx *exec_ctx, void *rq,
                                 grpc_error *error) {
-  grpc_resource_quota *resource_quota = rq;
+  grpc_resource_quota *resource_quota = (grpc_resource_quota *)rq;
   resource_quota->reclaiming = false;
   rq_step_sched(exec_ctx, resource_quota);
   grpc_resource_quota_unref_internal(exec_ctx, resource_quota);
@@ -565,7 +567,8 @@
 
 /* Public API */
 grpc_resource_quota *grpc_resource_quota_create(const char *name) {
-  grpc_resource_quota *resource_quota = gpr_malloc(sizeof(*resource_quota));
+  grpc_resource_quota *resource_quota =
+      (grpc_resource_quota *)gpr_malloc(sizeof(*resource_quota));
   gpr_ref_init(&resource_quota->refs, 1);
   resource_quota->combiner = grpc_combiner_create();
   resource_quota->free_pool = INT64_MAX;
@@ -629,7 +632,7 @@
 void grpc_resource_quota_resize(grpc_resource_quota *resource_quota,
                                 size_t size) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  rq_resize_args *a = gpr_malloc(sizeof(*a));
+  rq_resize_args *a = (rq_resize_args *)gpr_malloc(sizeof(*a));
   a->resource_quota = grpc_resource_quota_ref_internal(resource_quota);
   a->size = (int64_t)size;
   gpr_atm_no_barrier_store(&resource_quota->last_size,
@@ -684,7 +687,8 @@
 
 grpc_resource_user *grpc_resource_user_create(
     grpc_resource_quota *resource_quota, const char *name) {
-  grpc_resource_user *resource_user = gpr_malloc(sizeof(*resource_user));
+  grpc_resource_user *resource_user =
+      (grpc_resource_user *)gpr_malloc(sizeof(*resource_user));
   resource_user->resource_quota =
       grpc_resource_quota_ref_internal(resource_quota);
   GRPC_CLOSURE_INIT(&resource_user->allocate_closure, &ru_allocate,
diff --git a/src/core/lib/iomgr/tcp_client_posix.c b/src/core/lib/iomgr/tcp_client_posix.c
index a25fba4..39dbb50 100644
--- a/src/core/lib/iomgr/tcp_client_posix.c
+++ b/src/core/lib/iomgr/tcp_client_posix.c
@@ -80,7 +80,8 @@
     for (size_t i = 0; i < channel_args->num_args; i++) {
       if (0 == strcmp(channel_args->args[i].key, GRPC_ARG_SOCKET_MUTATOR)) {
         GPR_ASSERT(channel_args->args[i].type == GRPC_ARG_POINTER);
-        grpc_socket_mutator *mutator = channel_args->args[i].value.pointer.p;
+        grpc_socket_mutator *mutator =
+            (grpc_socket_mutator *)channel_args->args[i].value.pointer.p;
         err = grpc_set_socket_with_mutator(fd, mutator);
         if (err != GRPC_ERROR_NONE) goto error;
       }
@@ -98,7 +99,7 @@
 
 static void tc_on_alarm(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) {
   int done;
-  async_connect *ac = acp;
+  async_connect *ac = (async_connect *)acp;
   if (GRPC_TRACER_ON(grpc_tcp_trace)) {
     const char *str = grpc_error_string(error);
     gpr_log(GPR_DEBUG, "CLIENT_CONNECT: %s: on_alarm: error=%s", ac->addr_str,
@@ -126,7 +127,7 @@
 }
 
 static void on_writable(grpc_exec_ctx *exec_ctx, void *acp, grpc_error *error) {
-  async_connect *ac = acp;
+  async_connect *ac = (async_connect *)acp;
   int so_error = 0;
   socklen_t so_error_size;
   int err;
@@ -304,7 +305,7 @@
 
   grpc_pollset_set_add_fd(exec_ctx, interested_parties, fdobj);
 
-  ac = gpr_malloc(sizeof(async_connect));
+  ac = (async_connect *)gpr_malloc(sizeof(async_connect));
   ac->closure = closure;
   ac->ep = ep;
   ac->fd = fdobj;
diff --git a/src/core/lib/iomgr/tcp_posix.c b/src/core/lib/iomgr/tcp_posix.c
index 98a2afd..098883e 100644
--- a/src/core/lib/iomgr/tcp_posix.c
+++ b/src/core/lib/iomgr/tcp_posix.c
@@ -307,7 +307,7 @@
 
 static void tcp_read_allocation_done(grpc_exec_ctx *exec_ctx, void *tcpp,
                                      grpc_error *error) {
-  grpc_tcp *tcp = tcpp;
+  grpc_tcp *tcp = (grpc_tcp *)tcpp;
   if (error != GRPC_ERROR_NONE) {
     grpc_slice_buffer_reset_and_unref_internal(exec_ctx, tcp->incoming_buffer);
     grpc_slice_buffer_reset_and_unref_internal(exec_ctx,
diff --git a/src/core/lib/iomgr/tcp_server_posix.c b/src/core/lib/iomgr/tcp_server_posix.c
index 0fc5c0f..c3ec3e4 100644
--- a/src/core/lib/iomgr/tcp_server_posix.c
+++ b/src/core/lib/iomgr/tcp_server_posix.c
@@ -74,7 +74,7 @@
                                    grpc_tcp_server **server) {
   gpr_once_init(&check_init, init);
 
-  grpc_tcp_server *s = gpr_zalloc(sizeof(grpc_tcp_server));
+  grpc_tcp_server *s = (grpc_tcp_server *)gpr_zalloc(sizeof(grpc_tcp_server));
   s->so_reuseport = has_so_reuseport;
   s->expand_wildcard_addrs = false;
   for (size_t i = 0; i < (args == NULL ? 0 : args->num_args); i++) {
@@ -138,7 +138,7 @@
 
 static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server,
                            grpc_error *error) {
-  grpc_tcp_server *s = server;
+  grpc_tcp_server *s = (grpc_tcp_server *)server;
   gpr_mu_lock(&s->mu);
   s->destroyed_ports++;
   if (s->destroyed_ports == s->nports) {
@@ -197,7 +197,7 @@
 
 /* event manager callback when reads are ready */
 static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *err) {
-  grpc_tcp_listener *sp = arg;
+  grpc_tcp_listener *sp = (grpc_tcp_listener *)arg;
 
   if (err != GRPC_ERROR_NONE) {
     goto error;
@@ -251,7 +251,8 @@
     grpc_pollset_add_fd(exec_ctx, read_notifier_pollset, fdobj);
 
     // Create acceptor.
-    grpc_tcp_server_acceptor *acceptor = gpr_malloc(sizeof(*acceptor));
+    grpc_tcp_server_acceptor *acceptor =
+        (grpc_tcp_server_acceptor *)gpr_malloc(sizeof(*acceptor));
     acceptor->from_server = sp->server;
     acceptor->port_index = sp->port_index;
     acceptor->fd_index = sp->fd_index;
@@ -365,7 +366,7 @@
     listener->server->nports++;
     grpc_sockaddr_to_string(&addr_str, &listener->addr, 1);
     gpr_asprintf(&name, "tcp-server-listener:%s/clone-%d", addr_str, i);
-    sp = gpr_malloc(sizeof(grpc_tcp_listener));
+    sp = (grpc_tcp_listener *)gpr_malloc(sizeof(grpc_tcp_listener));
     sp->next = listener->next;
     listener->next = sp;
     /* sp (the new listener) is a sibling of 'listener' (the original
diff --git a/src/core/lib/iomgr/tcp_server_utils_posix_common.c b/src/core/lib/iomgr/tcp_server_utils_posix_common.c
index ad535bc..a828bee 100644
--- a/src/core/lib/iomgr/tcp_server_utils_posix_common.c
+++ b/src/core/lib/iomgr/tcp_server_utils_posix_common.c
@@ -93,7 +93,7 @@
     gpr_mu_lock(&s->mu);
     s->nports++;
     GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
-    sp = gpr_malloc(sizeof(grpc_tcp_listener));
+    sp = (grpc_tcp_listener *)gpr_malloc(sizeof(grpc_tcp_listener));
     sp->next = NULL;
     if (s->head == NULL) {
       s->head = sp;
diff --git a/src/core/lib/iomgr/timer_heap.c b/src/core/lib/iomgr/timer_heap.c
index a70e394..2648d5d 100644
--- a/src/core/lib/iomgr/timer_heap.c
+++ b/src/core/lib/iomgr/timer_heap.c
@@ -74,8 +74,8 @@
   if (heap->timer_count >= 8 &&
       heap->timer_count <= heap->timer_capacity / SHRINK_FULLNESS_FACTOR / 2) {
     heap->timer_capacity = heap->timer_count * SHRINK_FULLNESS_FACTOR;
-    heap->timers =
-        gpr_realloc(heap->timers, heap->timer_capacity * sizeof(grpc_timer *));
+    heap->timers = (grpc_timer **)gpr_realloc(
+        heap->timers, heap->timer_capacity * sizeof(grpc_timer *));
   }
 }
 
@@ -99,8 +99,8 @@
   if (heap->timer_count == heap->timer_capacity) {
     heap->timer_capacity =
         GPR_MAX(heap->timer_capacity + 1, heap->timer_capacity * 3 / 2);
-    heap->timers =
-        gpr_realloc(heap->timers, heap->timer_capacity * sizeof(grpc_timer *));
+    heap->timers = (grpc_timer **)gpr_realloc(
+        heap->timers, heap->timer_capacity * sizeof(grpc_timer *));
   }
   timer->heap_index = heap->timer_count;
   adjust_upwards(heap->timers, heap->timer_count, timer);
diff --git a/src/core/lib/iomgr/timer_manager.c b/src/core/lib/iomgr/timer_manager.c
index 631f793..ae2c0bf 100644
--- a/src/core/lib/iomgr/timer_manager.c
+++ b/src/core/lib/iomgr/timer_manager.c
@@ -83,7 +83,7 @@
   }
   gpr_thd_options opt = gpr_thd_options_default();
   gpr_thd_options_set_joinable(&opt);
-  completed_thread *ct = gpr_malloc(sizeof(*ct));
+  completed_thread *ct = (completed_thread *)gpr_malloc(sizeof(*ct));
   // The call to gpr_thd_new() has to be under the same lock used by
   // gc_completed_threads(), particularly due to ct->t, which is written here
   // (internally by gpr_thd_new) and read there. Otherwise it's possible for ct
diff --git a/src/core/lib/iomgr/udp_server.c b/src/core/lib/iomgr/udp_server.c
index 88fa34c..9a02c1d 100644
--- a/src/core/lib/iomgr/udp_server.c
+++ b/src/core/lib/iomgr/udp_server.c
@@ -125,7 +125,7 @@
 }
 
 grpc_udp_server *grpc_udp_server_create(const grpc_channel_args *args) {
-  grpc_udp_server *s = gpr_malloc(sizeof(grpc_udp_server));
+  grpc_udp_server *s = (grpc_udp_server *)gpr_malloc(sizeof(grpc_udp_server));
   gpr_mu_init(&s->mu);
   s->socket_factory = get_socket_factory(args);
   if (s->socket_factory) {
@@ -176,7 +176,7 @@
 
 static void destroyed_port(grpc_exec_ctx *exec_ctx, void *server,
                            grpc_error *error) {
-  grpc_udp_server *s = server;
+  grpc_udp_server *s = (grpc_udp_server *)server;
   gpr_mu_lock(&s->mu);
   s->destroyed_ports++;
   if (s->destroyed_ports == s->nports) {
@@ -237,7 +237,8 @@
   if (s->active_ports) {
     for (sp = s->head; sp; sp = sp->next) {
       GPR_ASSERT(sp->orphan_cb);
-      struct shutdown_fd_args *args = gpr_malloc(sizeof(*args));
+      struct shutdown_fd_args *args =
+          (struct shutdown_fd_args *)gpr_malloc(sizeof(*args));
       args->fd = sp->emfd;
       args->server_mu = &s->mu;
       GRPC_CLOSURE_INIT(&sp->orphan_fd_closure, shutdown_fd, args,
@@ -331,7 +332,7 @@
 
 /* event manager callback when reads are ready */
 static void on_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_udp_listener *sp = arg;
+  grpc_udp_listener *sp = (grpc_udp_listener *)arg;
 
   gpr_mu_lock(&sp->server->mu);
   if (error != GRPC_ERROR_NONE) {
@@ -354,7 +355,7 @@
 }
 
 static void on_write(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_udp_listener *sp = arg;
+  grpc_udp_listener *sp = (grpc_udp_listener *)arg;
 
   gpr_mu_lock(&(sp->server->mu));
   if (error != GRPC_ERROR_NONE) {
@@ -393,7 +394,7 @@
     gpr_free(addr_str);
     gpr_mu_lock(&s->mu);
     s->nports++;
-    sp = gpr_malloc(sizeof(grpc_udp_listener));
+    sp = (grpc_udp_listener *)gpr_malloc(sizeof(grpc_udp_listener));
     sp->next = NULL;
     if (s->head == NULL) {
       s->head = sp;
@@ -444,7 +445,8 @@
                            (socklen_t *)&sockname_temp.len)) {
         port = grpc_sockaddr_get_port(&sockname_temp);
         if (port > 0) {
-          allocated_addr = gpr_malloc(sizeof(grpc_resolved_address));
+          allocated_addr = (grpc_resolved_address *)gpr_malloc(
+              sizeof(grpc_resolved_address));
           memcpy(allocated_addr, addr, sizeof(grpc_resolved_address));
           grpc_sockaddr_set_port(allocated_addr, port);
           addr = allocated_addr;
diff --git a/src/core/lib/iomgr/unix_sockets_posix.c b/src/core/lib/iomgr/unix_sockets_posix.c
index 0c8627c..35f898f 100644
--- a/src/core/lib/iomgr/unix_sockets_posix.c
+++ b/src/core/lib/iomgr/unix_sockets_posix.c
@@ -49,9 +49,11 @@
     gpr_free(err_msg);
     return err;
   }
-  *addrs = gpr_malloc(sizeof(grpc_resolved_addresses));
+  *addrs =
+      (grpc_resolved_addresses *)gpr_malloc(sizeof(grpc_resolved_addresses));
   (*addrs)->naddrs = 1;
-  (*addrs)->addrs = gpr_malloc(sizeof(grpc_resolved_address));
+  (*addrs)->addrs =
+      (grpc_resolved_address *)gpr_malloc(sizeof(grpc_resolved_address));
   un = (struct sockaddr_un *)(*addrs)->addrs->addr;
   un->sun_family = AF_UNIX;
   strcpy(un->sun_path, name);
diff --git a/src/core/lib/iomgr/wakeup_fd_cv.c b/src/core/lib/iomgr/wakeup_fd_cv.c
index 075a0b6..5e0b1d1 100644
--- a/src/core/lib/iomgr/wakeup_fd_cv.c
+++ b/src/core/lib/iomgr/wakeup_fd_cv.c
@@ -42,7 +42,8 @@
   gpr_mu_lock(&g_cvfds.mu);
   if (!g_cvfds.free_fds) {
     newsize = GPR_MIN(g_cvfds.size * 2, g_cvfds.size + MAX_TABLE_RESIZE);
-    g_cvfds.cvfds = gpr_realloc(g_cvfds.cvfds, sizeof(fd_node) * newsize);
+    g_cvfds.cvfds =
+        (fd_node*)gpr_realloc(g_cvfds.cvfds, sizeof(fd_node) * newsize);
     for (i = g_cvfds.size; i < newsize; i++) {
       g_cvfds.cvfds[i].is_set = 0;
       g_cvfds.cvfds[i].cvs = NULL;
diff --git a/src/core/lib/json/json.c b/src/core/lib/json/json.c
index 25eee05..4ad51f6 100644
--- a/src/core/lib/json/json.c
+++ b/src/core/lib/json/json.c
@@ -23,7 +23,7 @@
 #include "src/core/lib/json/json.h"
 
 grpc_json* grpc_json_create(grpc_json_type type) {
-  grpc_json* json = gpr_zalloc(sizeof(*json));
+  grpc_json* json = (grpc_json*)gpr_zalloc(sizeof(*json));
   json->type = type;
 
   return json;
diff --git a/src/core/lib/json/json_string.c b/src/core/lib/json/json_string.c
index 65b5f0f..3178d2d 100644
--- a/src/core/lib/json/json_string.c
+++ b/src/core/lib/json/json_string.c
@@ -63,19 +63,19 @@
  * bytes at a time (or multiples thereof).
  */
 static void json_writer_output_check(void *userdata, size_t needed) {
-  json_writer_userdata *state = userdata;
+  json_writer_userdata *state = (json_writer_userdata *)userdata;
   if (state->free_space >= needed) return;
   needed -= state->free_space;
   /* Round up by 256 bytes. */
   needed = (needed + 0xff) & ~0xffU;
-  state->output = gpr_realloc(state->output, state->allocated + needed);
+  state->output = (char *)gpr_realloc(state->output, state->allocated + needed);
   state->free_space += needed;
   state->allocated += needed;
 }
 
 /* These are needed by the writer's implementation. */
 static void json_writer_output_char(void *userdata, char c) {
-  json_writer_userdata *state = userdata;
+  json_writer_userdata *state = (json_writer_userdata *)userdata;
   json_writer_output_check(userdata, 1);
   state->output[state->string_len++] = c;
   state->free_space--;
@@ -83,7 +83,7 @@
 
 static void json_writer_output_string_with_len(void *userdata, const char *str,
                                                size_t len) {
-  json_writer_userdata *state = userdata;
+  json_writer_userdata *state = (json_writer_userdata *)userdata;
   json_writer_output_check(userdata, len);
   memcpy(state->output + state->string_len, str, len);
   state->string_len += len;
@@ -99,7 +99,7 @@
  * the end of the current string, and advance our output pointer.
  */
 static void json_reader_string_clear(void *userdata) {
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
   if (state->string) {
     GPR_ASSERT(state->string_ptr < state->input);
     *state->string_ptr++ = 0;
@@ -108,7 +108,7 @@
 }
 
 static void json_reader_string_add_char(void *userdata, uint32_t c) {
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
   GPR_ASSERT(state->string_ptr < state->input);
   GPR_ASSERT(c <= 0xff);
   *state->string_ptr++ = (uint8_t)c;
@@ -149,7 +149,7 @@
  */
 static uint32_t json_reader_read_char(void *userdata) {
   uint32_t r;
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
 
   if (state->remaining_input == 0) return GRPC_JSON_READ_CHAR_EOF;
 
@@ -168,7 +168,7 @@
  * our tree-in-progress inside our opaque structure.
  */
 static grpc_json *json_create_and_link(void *userdata, grpc_json_type type) {
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
   grpc_json *json = grpc_json_create(type);
 
   json->parent = state->current_container;
@@ -194,7 +194,7 @@
 }
 
 static void json_reader_container_begins(void *userdata, grpc_json_type type) {
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
   grpc_json *container;
 
   GPR_ASSERT(type == GRPC_JSON_ARRAY || type == GRPC_JSON_OBJECT);
@@ -215,7 +215,7 @@
  */
 static grpc_json_type json_reader_container_ends(void *userdata) {
   grpc_json_type container_type = GRPC_JSON_TOP_LEVEL;
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
 
   GPR_ASSERT(state->current_container);
 
@@ -236,18 +236,18 @@
  * We'll keep it as a string, and leave it to the caller to evaluate it.
  */
 static void json_reader_set_key(void *userdata) {
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
   state->key = state->string;
 }
 
 static void json_reader_set_string(void *userdata) {
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
   grpc_json *json = json_create_and_link(userdata, GRPC_JSON_STRING);
   json->value = (char *)state->string;
 }
 
 static int json_reader_set_number(void *userdata) {
-  json_reader_userdata *state = userdata;
+  json_reader_userdata *state = (json_reader_userdata *)userdata;
   grpc_json *json = json_create_and_link(userdata, GRPC_JSON_NUMBER);
   json->value = (char *)state->string;
   return 1;
diff --git a/src/core/lib/slice/b64.c b/src/core/lib/slice/b64.c
index d02f303..5026471 100644
--- a/src/core/lib/slice/b64.c
+++ b/src/core/lib/slice/b64.c
@@ -58,7 +58,7 @@
                          int multiline) {
   size_t result_projected_size =
       grpc_base64_estimate_encoded_size(data_size, url_safe, multiline);
-  char *result = gpr_malloc(result_projected_size);
+  char *result = (char *)gpr_malloc(result_projected_size);
   grpc_base64_encode_core(result, vdata, data_size, url_safe, multiline);
   return result;
 }
@@ -75,7 +75,7 @@
 
 void grpc_base64_encode_core(char *result, const void *vdata, size_t data_size,
                              int url_safe, int multiline) {
-  const unsigned char *data = vdata;
+  const unsigned char *data = (const unsigned char *)vdata;
   const char *base64_chars =
       url_safe ? base64_url_safe_chars : base64_url_unsafe_chars;
   const size_t result_projected_size =
diff --git a/src/core/lib/slice/slice.c b/src/core/lib/slice/slice.c
index 8a80878..321a21a 100644
--- a/src/core/lib/slice/slice.c
+++ b/src/core/lib/slice/slice.c
@@ -27,7 +27,7 @@
 #include "src/core/lib/iomgr/exec_ctx.h"
 
 char *grpc_slice_to_c_string(grpc_slice slice) {
-  char *out = gpr_malloc(GRPC_SLICE_LENGTH(slice) + 1);
+  char *out = (char *)gpr_malloc(GRPC_SLICE_LENGTH(slice) + 1);
   memcpy(out, GRPC_SLICE_START_PTR(slice), GRPC_SLICE_LENGTH(slice));
   out[GRPC_SLICE_LENGTH(slice)] = 0;
   return out;
@@ -105,12 +105,12 @@
 } new_slice_refcount;
 
 static void new_slice_ref(void *p) {
-  new_slice_refcount *r = p;
+  new_slice_refcount *r = (new_slice_refcount *)p;
   gpr_ref(&r->refs);
 }
 
 static void new_slice_unref(grpc_exec_ctx *exec_ctx, void *p) {
-  new_slice_refcount *r = p;
+  new_slice_refcount *r = (new_slice_refcount *)p;
   if (gpr_unref(&r->refs)) {
     r->user_destroy(r->user_data);
     gpr_free(r);
@@ -125,7 +125,8 @@
                                          void (*destroy)(void *),
                                          void *user_data) {
   grpc_slice slice;
-  new_slice_refcount *rc = gpr_malloc(sizeof(new_slice_refcount));
+  new_slice_refcount *rc =
+      (new_slice_refcount *)gpr_malloc(sizeof(new_slice_refcount));
   gpr_ref_init(&rc->refs, 1);
   rc->rc.vtable = &new_slice_vtable;
   rc->rc.sub_refcount = &rc->rc;
@@ -133,7 +134,7 @@
   rc->user_data = user_data;
 
   slice.refcount = &rc->rc;
-  slice.data.refcounted.bytes = p;
+  slice.data.refcounted.bytes = (uint8_t *)p;
   slice.data.refcounted.length = len;
   return slice;
 }
@@ -154,12 +155,12 @@
 } new_with_len_slice_refcount;
 
 static void new_with_len_ref(void *p) {
-  new_with_len_slice_refcount *r = p;
+  new_with_len_slice_refcount *r = (new_with_len_slice_refcount *)p;
   gpr_ref(&r->refs);
 }
 
 static void new_with_len_unref(grpc_exec_ctx *exec_ctx, void *p) {
-  new_with_len_slice_refcount *r = p;
+  new_with_len_slice_refcount *r = (new_with_len_slice_refcount *)p;
   if (gpr_unref(&r->refs)) {
     r->user_destroy(r->user_data, r->user_length);
     gpr_free(r);
@@ -183,7 +184,7 @@
   rc->user_length = len;
 
   slice.refcount = &rc->rc;
-  slice.data.refcounted.bytes = p;
+  slice.data.refcounted.bytes = (uint8_t *)p;
   slice.data.refcounted.length = len;
   return slice;
 }
@@ -205,12 +206,12 @@
 } malloc_refcount;
 
 static void malloc_ref(void *p) {
-  malloc_refcount *r = p;
+  malloc_refcount *r = (malloc_refcount *)p;
   gpr_ref(&r->refs);
 }
 
 static void malloc_unref(grpc_exec_ctx *exec_ctx, void *p) {
-  malloc_refcount *r = p;
+  malloc_refcount *r = (malloc_refcount *)p;
   if (gpr_unref(&r->refs)) {
     gpr_free(r);
   }
@@ -232,7 +233,8 @@
      refcount is a malloc_refcount
      bytes is an array of bytes of the requested length
      Both parts are placed in the same allocation returned from gpr_malloc */
-  malloc_refcount *rc = gpr_malloc(sizeof(malloc_refcount) + length);
+  malloc_refcount *rc =
+      (malloc_refcount *)gpr_malloc(sizeof(malloc_refcount) + length);
 
   /* Initial refcount on rc is 1 - and it's up to the caller to release
      this reference. */
@@ -451,7 +453,7 @@
 
 int grpc_slice_chr(grpc_slice s, char c) {
   const char *b = (const char *)GRPC_SLICE_START_PTR(s);
-  const char *p = memchr(b, c, GRPC_SLICE_LENGTH(s));
+  const char *p = (const char *)memchr(b, c, GRPC_SLICE_LENGTH(s));
   return p == NULL ? -1 : (int)(p - b);
 }
 
diff --git a/src/core/lib/slice/slice_buffer.c b/src/core/lib/slice/slice_buffer.c
index a54a997..63ffc0b 100644
--- a/src/core/lib/slice/slice_buffer.c
+++ b/src/core/lib/slice/slice_buffer.c
@@ -45,11 +45,12 @@
       sb->capacity = GROW(sb->capacity);
       GPR_ASSERT(sb->capacity > slice_count);
       if (sb->base_slices == sb->inlined) {
-        sb->base_slices = gpr_malloc(sb->capacity * sizeof(grpc_slice));
+        sb->base_slices =
+            (grpc_slice *)gpr_malloc(sb->capacity * sizeof(grpc_slice));
         memcpy(sb->base_slices, sb->inlined, slice_count * sizeof(grpc_slice));
       } else {
-        sb->base_slices =
-            gpr_realloc(sb->base_slices, sb->capacity * sizeof(grpc_slice));
+        sb->base_slices = (grpc_slice *)gpr_realloc(
+            sb->base_slices, sb->capacity * sizeof(grpc_slice));
       }
 
       sb->slices = sb->base_slices + slice_offset;
@@ -291,7 +292,7 @@
 void grpc_slice_buffer_move_first_into_buffer(grpc_exec_ctx *exec_ctx,
                                               grpc_slice_buffer *src, size_t n,
                                               void *dst) {
-  char *dstp = dst;
+  char *dstp = (char *)dst;
   GPR_ASSERT(src->length >= n);
 
   while (n > 0) {
diff --git a/src/core/lib/slice/slice_hash_table.c b/src/core/lib/slice/slice_hash_table.c
index 1866ed2..6c2c9c2 100644
--- a/src/core/lib/slice/slice_hash_table.c
+++ b/src/core/lib/slice/slice_hash_table.c
@@ -60,14 +60,15 @@
     size_t num_entries, grpc_slice_hash_table_entry* entries,
     void (*destroy_value)(grpc_exec_ctx* exec_ctx, void* value),
     int (*value_cmp)(void* a, void* b)) {
-  grpc_slice_hash_table* table = gpr_zalloc(sizeof(*table));
+  grpc_slice_hash_table* table =
+      (grpc_slice_hash_table*)gpr_zalloc(sizeof(*table));
   gpr_ref_init(&table->refs, 1);
   table->destroy_value = destroy_value;
   table->value_cmp = value_cmp;
   // Keep load factor low to improve performance of lookups.
   table->size = num_entries * 2;
   const size_t entry_size = sizeof(grpc_slice_hash_table_entry) * table->size;
-  table->entries = gpr_zalloc(entry_size);
+  table->entries = (grpc_slice_hash_table_entry*)gpr_zalloc(entry_size);
   for (size_t i = 0; i < num_entries; ++i) {
     grpc_slice_hash_table_entry* entry = &entries[i];
     grpc_slice_hash_table_add(table, entry->key, entry->value);
diff --git a/src/core/lib/slice/slice_intern.c b/src/core/lib/slice/slice_intern.c
index a6d22c1..ec71b3c 100644
--- a/src/core/lib/slice/slice_intern.c
+++ b/src/core/lib/slice/slice_intern.c
@@ -69,7 +69,7 @@
 static uint32_t static_metadata_hash_values[GRPC_STATIC_MDSTR_COUNT];
 
 static void interned_slice_ref(void *p) {
-  interned_slice_refcount *s = p;
+  interned_slice_refcount *s = (interned_slice_refcount *)p;
   GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&s->refcnt, 1) > 0);
 }
 
@@ -90,7 +90,7 @@
 }
 
 static void interned_slice_unref(grpc_exec_ctx *exec_ctx, void *p) {
-  interned_slice_refcount *s = p;
+  interned_slice_refcount *s = (interned_slice_refcount *)p;
   if (1 == gpr_atm_full_fetch_add(&s->refcnt, -1)) {
     interned_slice_destroy(s);
   }
@@ -129,7 +129,8 @@
 
   GPR_TIMER_BEGIN("grow_strtab", 0);
 
-  strtab = gpr_zalloc(sizeof(interned_slice_refcount *) * capacity);
+  strtab = (interned_slice_refcount **)gpr_zalloc(
+      sizeof(interned_slice_refcount *) * capacity);
 
   for (i = 0; i < shard->capacity; i++) {
     for (s = shard->strs[i]; s; s = next) {
@@ -242,7 +243,8 @@
 
   /* not found: create a new string */
   /* string data goes after the internal_string header */
-  s = gpr_malloc(sizeof(*s) + GRPC_SLICE_LENGTH(slice));
+  s = (interned_slice_refcount *)gpr_malloc(sizeof(*s) +
+                                            GRPC_SLICE_LENGTH(slice));
   gpr_atm_rel_store(&s->refcnt, 1);
   s->length = GRPC_SLICE_LENGTH(slice);
   s->hash = hash;
@@ -280,7 +282,8 @@
     gpr_mu_init(&shard->mu);
     shard->count = 0;
     shard->capacity = INITIAL_SHARD_CAPACITY;
-    shard->strs = gpr_zalloc(sizeof(*shard->strs) * shard->capacity);
+    shard->strs = (interned_slice_refcount **)gpr_zalloc(sizeof(*shard->strs) *
+                                                         shard->capacity);
   }
   for (size_t i = 0; i < GPR_ARRAY_SIZE(static_metadata_hash); i++) {
     static_metadata_hash[i].hash = 0;
diff --git a/src/core/lib/surface/alarm.c b/src/core/lib/surface/alarm.c
index 5dbfaa2..7712f56 100644
--- a/src/core/lib/surface/alarm.c
+++ b/src/core/lib/surface/alarm.c
@@ -80,12 +80,12 @@
 
 static void alarm_end_completion(grpc_exec_ctx *exec_ctx, void *arg,
                                  grpc_cq_completion *c) {
-  grpc_alarm *alarm = arg;
+  grpc_alarm *alarm = (grpc_alarm *)arg;
   GRPC_ALARM_UNREF(alarm, "dequeue-end-op");
 }
 
 static void alarm_cb(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  grpc_alarm *alarm = arg;
+  grpc_alarm *alarm = (grpc_alarm *)arg;
 
   /* We are queuing an op on completion queue. This means, the alarm's structure
      cannot be destroyed until the op is dequeued. Adding an extra ref
@@ -96,7 +96,7 @@
 }
 
 grpc_alarm *grpc_alarm_create(void *reserved) {
-  grpc_alarm *alarm = gpr_malloc(sizeof(grpc_alarm));
+  grpc_alarm *alarm = (grpc_alarm *)gpr_malloc(sizeof(grpc_alarm));
 
 #ifndef NDEBUG
   if (GRPC_TRACER_ON(grpc_trace_alarm_refcount)) {
diff --git a/src/core/lib/surface/byte_buffer.c b/src/core/lib/surface/byte_buffer.c
index 0bc990d..7ed550e 100644
--- a/src/core/lib/surface/byte_buffer.c
+++ b/src/core/lib/surface/byte_buffer.c
@@ -32,7 +32,8 @@
     grpc_slice *slices, size_t nslices,
     grpc_compression_algorithm compression) {
   size_t i;
-  grpc_byte_buffer *bb = gpr_malloc(sizeof(grpc_byte_buffer));
+  grpc_byte_buffer *bb =
+      (grpc_byte_buffer *)gpr_malloc(sizeof(grpc_byte_buffer));
   bb->type = GRPC_BB_RAW;
   bb->data.raw.compression = compression;
   grpc_slice_buffer_init(&bb->data.raw.slice_buffer);
@@ -45,7 +46,8 @@
 
 grpc_byte_buffer *grpc_raw_byte_buffer_from_reader(
     grpc_byte_buffer_reader *reader) {
-  grpc_byte_buffer *bb = gpr_malloc(sizeof(grpc_byte_buffer));
+  grpc_byte_buffer *bb =
+      (grpc_byte_buffer *)gpr_malloc(sizeof(grpc_byte_buffer));
   grpc_slice slice;
   bb->type = GRPC_BB_RAW;
   bb->data.raw.compression = GRPC_COMPRESS_NONE;
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 3aa20ff..93c512d 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -307,7 +307,7 @@
 static parent_call *get_or_create_parent_call(grpc_call *call) {
   parent_call *p = (parent_call *)gpr_atm_acq_load(&call->parent_call_atm);
   if (p == NULL) {
-    p = gpr_arena_alloc(call->arena, sizeof(*p));
+    p = (parent_call *)gpr_arena_alloc(call->arena, sizeof(*p));
     gpr_mu_init(&p->child_list_mu);
     if (!gpr_atm_rel_cas(&call->parent_call_atm, (gpr_atm)NULL, (gpr_atm)p)) {
       gpr_mu_destroy(&p->child_list_mu);
@@ -332,8 +332,8 @@
   GPR_TIMER_BEGIN("grpc_call_create", 0);
   gpr_arena *arena =
       gpr_arena_create(grpc_channel_get_call_size_estimate(args->channel));
-  call = gpr_arena_alloc(arena,
-                         sizeof(grpc_call) + channel_stack->call_stack_size);
+  call = (grpc_call *)gpr_arena_alloc(
+      arena, sizeof(grpc_call) + channel_stack->call_stack_size);
   gpr_ref_init(&call->ext_ref, 1);
   call->arena = arena;
   grpc_call_combiner_init(&call->call_combiner);
@@ -511,7 +511,7 @@
 
 static void release_call(grpc_exec_ctx *exec_ctx, void *call,
                          grpc_error *error) {
-  grpc_call *c = call;
+  grpc_call *c = (grpc_call *)call;
   grpc_channel *channel = c->channel;
   grpc_call_combiner_destroy(&c->call_combiner);
   gpr_free((char *)c->peer_string);
@@ -524,7 +524,7 @@
                          grpc_error *error) {
   size_t i;
   int ii;
-  grpc_call *c = call;
+  grpc_call *c = (grpc_call *)call;
   GPR_TIMER_BEGIN("destroy_call", 0);
   for (i = 0; i < 2; i++) {
     grpc_metadata_batch_destroy(
@@ -624,8 +624,8 @@
 // the filter stack.
 static void execute_batch_in_call_combiner(grpc_exec_ctx *exec_ctx, void *arg,
                                            grpc_error *ignored) {
-  grpc_transport_stream_op_batch *batch = arg;
-  grpc_call *call = batch->handler_private.extra_arg;
+  grpc_transport_stream_op_batch *batch = (grpc_transport_stream_op_batch *)arg;
+  grpc_call *call = (grpc_call *)batch->handler_private.extra_arg;
   GPR_TIMER_BEGIN("execute_batch", 0);
   grpc_call_element *elem = CALL_ELEM_FROM_CALL(call, 0);
   GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
@@ -1105,8 +1105,8 @@
   if (dest->count + b->list.count > dest->capacity) {
     dest->capacity =
         GPR_MAX(dest->capacity + b->list.count, dest->capacity * 3 / 2);
-    dest->metadata =
-        gpr_realloc(dest->metadata, sizeof(grpc_metadata) * dest->capacity);
+    dest->metadata = (grpc_metadata *)gpr_realloc(
+        dest->metadata, sizeof(grpc_metadata) * dest->capacity);
   }
   for (grpc_linked_mdelem *l = b->list.head; l != NULL; l = l->next) {
     mdusr = &dest->metadata[dest->count++];
@@ -1157,7 +1157,7 @@
 
 static void recv_trailing_filter(grpc_exec_ctx *exec_ctx, void *args,
                                  grpc_metadata_batch *b) {
-  grpc_call *call = args;
+  grpc_call *call = (grpc_call *)args;
   if (b->idx.named.grpc_status != NULL) {
     uint32_t status_code = decode_status(b->idx.named.grpc_status->md);
     grpc_error *error =
@@ -1241,7 +1241,8 @@
   int slot = batch_slot_for_op(ops[0].op);
   batch_control **pslot = &call->active_batches[slot];
   if (*pslot == NULL) {
-    *pslot = gpr_arena_alloc(call->arena, sizeof(batch_control));
+    *pslot =
+        (batch_control *)gpr_arena_alloc(call->arena, sizeof(batch_control));
   }
   batch_control *bctl = *pslot;
   if (bctl->call != NULL) {
@@ -1255,7 +1256,7 @@
 
 static void finish_batch_completion(grpc_exec_ctx *exec_ctx, void *user_data,
                                     grpc_cq_completion *storage) {
-  batch_control *bctl = user_data;
+  batch_control *bctl = (batch_control *)user_data;
   grpc_call *call = bctl->call;
   bctl->call = NULL;
   GRPC_CALL_INTERNAL_UNREF(exec_ctx, call, "completion");
@@ -1398,7 +1399,7 @@
 
 static void receiving_slice_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
                                   grpc_error *error) {
-  batch_control *bctl = bctlp;
+  batch_control *bctl = (batch_control *)bctlp;
   grpc_call *call = bctl->call;
   grpc_byte_stream *bs = call->receiving_stream;
   bool release_error = false;
@@ -1457,7 +1458,7 @@
 
 static void receiving_stream_ready(grpc_exec_ctx *exec_ctx, void *bctlp,
                                    grpc_error *error) {
-  batch_control *bctl = bctlp;
+  batch_control *bctl = (batch_control *)bctlp;
   grpc_call *call = bctl->call;
   if (error != GRPC_ERROR_NONE) {
     if (call->receiving_stream != NULL) {
@@ -1483,7 +1484,7 @@
 static void receiving_stream_ready_in_call_combiner(grpc_exec_ctx *exec_ctx,
                                                     void *bctlp,
                                                     grpc_error *error) {
-  batch_control *bctl = bctlp;
+  batch_control *bctl = (batch_control *)bctlp;
   grpc_call *call = bctl->call;
   GRPC_CALL_COMBINER_STOP(exec_ctx, &call->call_combiner, "recv_message_ready");
   receiving_stream_ready(exec_ctx, bctlp, error);
@@ -1592,7 +1593,7 @@
 
 static void receiving_initial_metadata_ready(grpc_exec_ctx *exec_ctx,
                                              void *bctlp, grpc_error *error) {
-  batch_control *bctl = bctlp;
+  batch_control *bctl = (batch_control *)bctlp;
   grpc_call *call = bctl->call;
 
   GRPC_CALL_COMBINER_STOP(exec_ctx, &call->call_combiner,
@@ -1650,7 +1651,7 @@
 
 static void finish_batch(grpc_exec_ctx *exec_ctx, void *bctlp,
                          grpc_error *error) {
-  batch_control *bctl = bctlp;
+  batch_control *bctl = (batch_control *)bctlp;
   grpc_call *call = bctl->call;
   GRPC_CALL_COMBINER_STOP(exec_ctx, &call->call_combiner, "on_complete");
   add_batch_error(exec_ctx, bctl, GRPC_ERROR_REF(error), false);
diff --git a/src/core/lib/surface/channel.c b/src/core/lib/surface/channel.c
index 850fbe6..34548da 100644
--- a/src/core/lib/surface/channel.c
+++ b/src/core/lib/surface/channel.c
@@ -327,7 +327,7 @@
 
 void *grpc_channel_register_call(grpc_channel *channel, const char *method,
                                  const char *host, void *reserved) {
-  registered_call *rc = gpr_malloc(sizeof(registered_call));
+  registered_call *rc = (registered_call *)gpr_malloc(sizeof(registered_call));
   GRPC_API_TRACE(
       "grpc_channel_register_call(channel=%p, method=%s, host=%s, reserved=%p)",
       4, (channel, method, host, reserved));
@@ -354,7 +354,7 @@
     grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask,
     grpc_completion_queue *completion_queue, void *registered_call_handle,
     gpr_timespec deadline, void *reserved) {
-  registered_call *rc = registered_call_handle;
+  registered_call *rc = (registered_call *)registered_call_handle;
   GRPC_API_TRACE(
       "grpc_channel_create_registered_call("
       "channel=%p, parent_call=%p, propagation_mask=%x, completion_queue=%p, "
@@ -392,7 +392,7 @@
 
 static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg,
                             grpc_error *error) {
-  grpc_channel *channel = arg;
+  grpc_channel *channel = (grpc_channel *)arg;
   grpc_channel_stack_destroy(exec_ctx, CHANNEL_STACK_FROM_CHANNEL(channel));
   while (channel->registered_calls) {
     registered_call *rc = channel->registered_calls;
diff --git a/src/core/lib/surface/channel_init.c b/src/core/lib/surface/channel_init.c
index a1391ff..33f444b 100644
--- a/src/core/lib/surface/channel_init.c
+++ b/src/core/lib/surface/channel_init.c
@@ -53,9 +53,9 @@
   GPR_ASSERT(!g_finalized);
   if (g_slots[type].cap_slots == g_slots[type].num_slots) {
     g_slots[type].cap_slots = GPR_MAX(8, 3 * g_slots[type].cap_slots / 2);
-    g_slots[type].slots =
-        gpr_realloc(g_slots[type].slots,
-                    g_slots[type].cap_slots * sizeof(*g_slots[type].slots));
+    g_slots[type].slots = (stage_slot *)gpr_realloc(
+        g_slots[type].slots,
+        g_slots[type].cap_slots * sizeof(*g_slots[type].slots));
   }
   stage_slot *s = &g_slots[type].slots[g_slots[type].num_slots++];
   s->insertion_order = g_slots[type].num_slots;
@@ -65,8 +65,8 @@
 }
 
 static int compare_slots(const void *a, const void *b) {
-  const stage_slot *sa = a;
-  const stage_slot *sb = b;
+  const stage_slot *sa = (const stage_slot *)a;
+  const stage_slot *sb = (const stage_slot *)b;
 
   int c = GPR_ICMP(sa->priority, sb->priority);
   if (c != 0) return c;
@@ -85,7 +85,7 @@
 void grpc_channel_init_shutdown(void) {
   for (int i = 0; i < GRPC_NUM_CHANNEL_STACK_TYPES; i++) {
     gpr_free(g_slots[i].slots);
-    g_slots[i].slots = (void *)(uintptr_t)0xdeadbeef;
+    g_slots[i].slots = (stage_slot *)(void *)(uintptr_t)0xdeadbeef;
   }
 }
 
diff --git a/src/core/lib/surface/channel_ping.c b/src/core/lib/surface/channel_ping.c
index e85b308..f45b568 100644
--- a/src/core/lib/surface/channel_ping.c
+++ b/src/core/lib/surface/channel_ping.c
@@ -39,7 +39,7 @@
 }
 
 static void ping_done(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
-  ping_result *pr = arg;
+  ping_result *pr = (ping_result *)arg;
   grpc_cq_end_op(exec_ctx, pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy,
                  pr, &pr->completion_storage);
 }
@@ -49,7 +49,7 @@
   GRPC_API_TRACE("grpc_channel_ping(channel=%p, cq=%p, tag=%p, reserved=%p)", 4,
                  (channel, cq, tag, reserved));
   grpc_transport_op *op = grpc_make_transport_op(NULL);
-  ping_result *pr = gpr_malloc(sizeof(*pr));
+  ping_result *pr = (ping_result *)gpr_malloc(sizeof(*pr));
   grpc_channel_element *top_elem =
       grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0);
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
diff --git a/src/core/lib/surface/completion_queue.c b/src/core/lib/surface/completion_queue.c
index 10e4e5a..4726503 100644
--- a/src/core/lib/surface/completion_queue.c
+++ b/src/core/lib/surface/completion_queue.c
@@ -420,8 +420,9 @@
   const cq_poller_vtable *poller_vtable =
       &g_poller_vtable_by_poller_type[polling_type];
 
-  cq = gpr_zalloc(sizeof(grpc_completion_queue) + vtable->data_size +
-                  poller_vtable->size());
+  cq = (grpc_completion_queue *)gpr_zalloc(sizeof(grpc_completion_queue) +
+                                           vtable->data_size +
+                                           poller_vtable->size());
 
   cq->vtable = vtable;
   cq->poller_vtable = poller_vtable;
@@ -441,7 +442,7 @@
 }
 
 static void cq_init_next(void *ptr) {
-  cq_next_data *cqd = ptr;
+  cq_next_data *cqd = (cq_next_data *)ptr;
   /* Initial count is dropped by grpc_completion_queue_shutdown */
   gpr_atm_no_barrier_store(&cqd->pending_events, 1);
   cqd->shutdown_called = false;
@@ -450,13 +451,13 @@
 }
 
 static void cq_destroy_next(void *ptr) {
-  cq_next_data *cqd = ptr;
+  cq_next_data *cqd = (cq_next_data *)ptr;
   GPR_ASSERT(cq_event_queue_num_items(&cqd->queue) == 0);
   cq_event_queue_destroy(&cqd->queue);
 }
 
 static void cq_init_pluck(void *ptr) {
-  cq_pluck_data *cqd = ptr;
+  cq_pluck_data *cqd = (cq_pluck_data *)ptr;
   /* Initial count is dropped by grpc_completion_queue_shutdown */
   gpr_atm_no_barrier_store(&cqd->pending_events, 1);
   cqd->completed_tail = &cqd->completed_head;
@@ -468,7 +469,7 @@
 }
 
 static void cq_destroy_pluck(void *ptr) {
-  cq_pluck_data *cqd = ptr;
+  cq_pluck_data *cqd = (cq_pluck_data *)ptr;
   GPR_ASSERT(cqd->completed_head.next == (uintptr_t)&cqd->completed_head);
 }
 
@@ -501,7 +502,7 @@
 
 static void on_pollset_shutdown_done(grpc_exec_ctx *exec_ctx, void *arg,
                                      grpc_error *error) {
-  grpc_completion_queue *cq = arg;
+  grpc_completion_queue *cq = (grpc_completion_queue *)arg;
   GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "pollset_destroy");
 }
 
@@ -588,9 +589,9 @@
   gpr_mu_lock(cq->mu);
   if (cq->outstanding_tag_count == cq->outstanding_tag_capacity) {
     cq->outstanding_tag_capacity = GPR_MAX(4, 2 * cq->outstanding_tag_capacity);
-    cq->outstanding_tags =
-        gpr_realloc(cq->outstanding_tags, sizeof(*cq->outstanding_tags) *
-                                              cq->outstanding_tag_capacity);
+    cq->outstanding_tags = (void **)gpr_realloc(
+        cq->outstanding_tags,
+        sizeof(*cq->outstanding_tags) * cq->outstanding_tag_capacity);
   }
   cq->outstanding_tags[cq->outstanding_tag_count++] = tag;
   gpr_mu_unlock(cq->mu);
@@ -766,7 +767,7 @@
 } cq_is_finished_arg;
 
 static bool cq_is_next_finished(grpc_exec_ctx *exec_ctx, void *arg) {
-  cq_is_finished_arg *a = arg;
+  cq_is_finished_arg *a = (cq_is_finished_arg *)arg;
   grpc_completion_queue *cq = a->cq;
   cq_next_data *cqd = DATA_FROM_CQ(cq);
   GPR_ASSERT(a->stolen_completion == NULL);
@@ -1017,7 +1018,7 @@
 }
 
 static bool cq_is_pluck_finished(grpc_exec_ctx *exec_ctx, void *arg) {
-  cq_is_finished_arg *a = arg;
+  cq_is_finished_arg *a = (cq_is_finished_arg *)arg;
   grpc_completion_queue *cq = a->cq;
   cq_pluck_data *cqd = DATA_FROM_CQ(cq);
 
diff --git a/src/core/lib/surface/server.c b/src/core/lib/surface/server.c
index 8582d82..a8eb1b0 100644
--- a/src/core/lib/surface/server.c
+++ b/src/core/lib/surface/server.c
@@ -250,7 +250,8 @@
     count++;
   }
   cb->num_channels = count;
-  cb->channels = gpr_malloc(sizeof(*cb->channels) * cb->num_channels);
+  cb->channels =
+      (grpc_channel **)gpr_malloc(sizeof(*cb->channels) * cb->num_channels);
   count = 0;
   for (c = s->root_channel_data.next; c != &s->root_channel_data; c = c->next) {
     cb->channels[count++] = c->channel;
@@ -265,14 +266,15 @@
 
 static void shutdown_cleanup(grpc_exec_ctx *exec_ctx, void *arg,
                              grpc_error *error) {
-  struct shutdown_cleanup_args *a = arg;
+  struct shutdown_cleanup_args *a = (struct shutdown_cleanup_args *)arg;
   grpc_slice_unref_internal(exec_ctx, a->slice);
   gpr_free(a);
 }
 
 static void send_shutdown(grpc_exec_ctx *exec_ctx, grpc_channel *channel,
                           bool send_goaway, grpc_error *send_disconnect) {
-  struct shutdown_cleanup_args *sc = gpr_malloc(sizeof(*sc));
+  struct shutdown_cleanup_args *sc =
+      (struct shutdown_cleanup_args *)gpr_malloc(sizeof(*sc));
   GRPC_CLOSURE_INIT(&sc->closure, shutdown_cleanup, sc,
                     grpc_schedule_on_exec_ctx);
   grpc_transport_op *op = grpc_make_transport_op(&sc->closure);
@@ -314,8 +316,8 @@
                                  grpc_server *server) {
   memset(rm, 0, sizeof(*rm));
   rm->server = server;
-  rm->requests_per_cq =
-      gpr_malloc(sizeof(*rm->requests_per_cq) * server->cq_count);
+  rm->requests_per_cq = (gpr_stack_lockfree **)gpr_malloc(
+      sizeof(*rm->requests_per_cq) * server->cq_count);
   for (size_t i = 0; i < server->cq_count; i++) {
     rm->requests_per_cq[i] = gpr_stack_lockfree_create(entries);
   }
@@ -426,7 +428,7 @@
 
 static void finish_destroy_channel(grpc_exec_ctx *exec_ctx, void *cd,
                                    grpc_error *error) {
-  channel_data *chand = cd;
+  channel_data *chand = (channel_data *)cd;
   grpc_server *server = chand->server;
   GRPC_CHANNEL_INTERNAL_UNREF(exec_ctx, chand->channel, "server");
   server_unref(exec_ctx, server);
@@ -459,7 +461,7 @@
 
 static void done_request_event(grpc_exec_ctx *exec_ctx, void *req,
                                grpc_cq_completion *c) {
-  requested_call *rc = req;
+  requested_call *rc = (requested_call *)req;
   grpc_server *server = rc->server;
 
   if (rc >= server->requested_calls_per_cq[rc->cq_idx] &&
@@ -505,7 +507,7 @@
 
   grpc_call_element *elem =
       grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   server_ref(chand->server);
   grpc_cq_end_op(exec_ctx, calld->cq_new, rc->tag, GRPC_ERROR_NONE,
                  done_request_event, rc, &rc->completion);
@@ -513,9 +515,9 @@
 
 static void publish_new_rpc(grpc_exec_ctx *exec_ctx, void *arg,
                             grpc_error *error) {
-  grpc_call_element *call_elem = arg;
-  call_data *calld = call_elem->call_data;
-  channel_data *chand = call_elem->channel_data;
+  grpc_call_element *call_elem = (grpc_call_element *)arg;
+  call_data *calld = (call_data *)call_elem->call_data;
+  channel_data *chand = (channel_data *)call_elem->channel_data;
   request_matcher *rm = calld->request_matcher;
   grpc_server *server = rm->server;
 
@@ -566,7 +568,7 @@
     grpc_exec_ctx *exec_ctx, grpc_server *server, grpc_call_element *elem,
     request_matcher *rm,
     grpc_server_register_method_payload_handling payload_handling) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
 
   if (gpr_atm_acq_load(&server->shutdown_flag)) {
     gpr_mu_lock(&calld->mu_state);
@@ -599,8 +601,8 @@
 }
 
 static void start_new_rpc(grpc_exec_ctx *exec_ctx, grpc_call_element *elem) {
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_server *server = chand->server;
   uint32_t i;
   uint32_t hash;
@@ -732,8 +734,8 @@
 
 static void server_on_recv_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr,
                                             grpc_error *error) {
-  grpc_call_element *elem = ptr;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)ptr;
+  call_data *calld = (call_data *)elem->call_data;
   gpr_timespec op_deadline;
 
   if (error == GRPC_ERROR_NONE) {
@@ -771,7 +773,7 @@
 
 static void server_mutate_op(grpc_call_element *elem,
                              grpc_transport_stream_op_batch *op) {
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
 
   if (op->recv_initial_metadata) {
     GPR_ASSERT(op->payload->recv_initial_metadata.recv_flags == NULL);
@@ -795,8 +797,8 @@
 
 static void got_initial_metadata(grpc_exec_ctx *exec_ctx, void *ptr,
                                  grpc_error *error) {
-  grpc_call_element *elem = ptr;
-  call_data *calld = elem->call_data;
+  grpc_call_element *elem = (grpc_call_element *)ptr;
+  call_data *calld = (call_data *)elem->call_data;
   if (error == GRPC_ERROR_NONE) {
     start_new_rpc(exec_ctx, elem);
   } else {
@@ -822,7 +824,7 @@
 static void accept_stream(grpc_exec_ctx *exec_ctx, void *cd,
                           grpc_transport *transport,
                           const void *transport_server_data) {
-  channel_data *chand = cd;
+  channel_data *chand = (channel_data *)cd;
   /* create a call */
   grpc_call_create_args args;
   memset(&args, 0, sizeof(args));
@@ -838,7 +840,7 @@
     GRPC_ERROR_UNREF(error);
     return;
   }
-  call_data *calld = elem->call_data;
+  call_data *calld = (call_data *)elem->call_data;
   grpc_op op;
   memset(&op, 0, sizeof(op));
   op.op = GRPC_OP_RECV_INITIAL_METADATA;
@@ -852,7 +854,7 @@
 
 static void channel_connectivity_changed(grpc_exec_ctx *exec_ctx, void *cd,
                                          grpc_error *error) {
-  channel_data *chand = cd;
+  channel_data *chand = (channel_data *)cd;
   grpc_server *server = chand->server;
   if (chand->connectivity_state != GRPC_CHANNEL_SHUTDOWN) {
     grpc_transport_op *op = grpc_make_transport_op(NULL);
@@ -873,8 +875,8 @@
 static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
                                   grpc_call_element *elem,
                                   const grpc_call_element_args *args) {
-  call_data *calld = elem->call_data;
-  channel_data *chand = elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   memset(calld, 0, sizeof(call_data));
   calld->deadline = gpr_inf_future(GPR_CLOCK_REALTIME);
   calld->call = grpc_call_from_top_element(elem);
@@ -891,8 +893,8 @@
 static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
                               const grpc_call_final_info *final_info,
                               grpc_closure *ignored) {
-  channel_data *chand = elem->channel_data;
-  call_data *calld = elem->call_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
+  call_data *calld = (call_data *)elem->call_data;
 
   GPR_ASSERT(calld->state != PENDING);
 
@@ -913,7 +915,7 @@
 static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
                                      grpc_channel_element *elem,
                                      grpc_channel_element_args *args) {
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   GPR_ASSERT(args->is_first);
   GPR_ASSERT(!args->is_last);
   chand->server = NULL;
@@ -930,7 +932,7 @@
 static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
                                  grpc_channel_element *elem) {
   size_t i;
-  channel_data *chand = elem->channel_data;
+  channel_data *chand = (channel_data *)elem->channel_data;
   if (chand->registered_methods) {
     for (i = 0; i < chand->registered_method_slots; i++) {
       grpc_slice_unref_internal(exec_ctx, chand->registered_methods[i].method);
@@ -976,8 +978,8 @@
 
   GRPC_CQ_INTERNAL_REF(cq, "server");
   n = server->cq_count++;
-  server->cqs = gpr_realloc(server->cqs,
-                            server->cq_count * sizeof(grpc_completion_queue *));
+  server->cqs = (grpc_completion_queue **)gpr_realloc(
+      server->cqs, server->cq_count * sizeof(grpc_completion_queue *));
   server->cqs[n] = cq;
 }
 
@@ -1002,7 +1004,7 @@
 grpc_server *grpc_server_create(const grpc_channel_args *args, void *reserved) {
   GRPC_API_TRACE("grpc_server_create(%p, %p)", 2, (args, reserved));
 
-  grpc_server *server = gpr_zalloc(sizeof(grpc_server));
+  grpc_server *server = (grpc_server *)gpr_zalloc(sizeof(grpc_server));
 
   gpr_mu_init(&server->mu_global);
   gpr_mu_init(&server->mu_call);
@@ -1053,7 +1055,7 @@
             flags);
     return NULL;
   }
-  m = gpr_zalloc(sizeof(registered_method));
+  m = (registered_method *)gpr_zalloc(sizeof(registered_method));
   m->method = gpr_strdup(method);
   m->host = gpr_strdup(host);
   m->next = server->registered_methods;
@@ -1065,7 +1067,7 @@
 
 static void start_listeners(grpc_exec_ctx *exec_ctx, void *s,
                             grpc_error *error) {
-  grpc_server *server = s;
+  grpc_server *server = (grpc_server *)s;
   for (listener *l = server->listeners; l; l = l->next) {
     l->start(exec_ctx, server, l->arg, server->pollsets, server->pollset_count);
   }
@@ -1086,11 +1088,12 @@
 
   server->started = true;
   server->pollset_count = 0;
-  server->pollsets = gpr_malloc(sizeof(grpc_pollset *) * server->cq_count);
-  server->request_freelist_per_cq =
-      gpr_malloc(sizeof(*server->request_freelist_per_cq) * server->cq_count);
-  server->requested_calls_per_cq =
-      gpr_malloc(sizeof(*server->requested_calls_per_cq) * server->cq_count);
+  server->pollsets =
+      (grpc_pollset **)gpr_malloc(sizeof(grpc_pollset *) * server->cq_count);
+  server->request_freelist_per_cq = (gpr_stack_lockfree **)gpr_malloc(
+      sizeof(*server->request_freelist_per_cq) * server->cq_count);
+  server->requested_calls_per_cq = (requested_call **)gpr_malloc(
+      sizeof(*server->requested_calls_per_cq) * server->cq_count);
   for (i = 0; i < server->cq_count; i++) {
     if (grpc_cq_can_listen(server->cqs[i])) {
       server->pollsets[server->pollset_count++] =
@@ -1101,9 +1104,9 @@
     for (int j = 0; j < server->max_requested_calls_per_cq; j++) {
       gpr_stack_lockfree_push(server->request_freelist_per_cq[i], j);
     }
-    server->requested_calls_per_cq[i] =
-        gpr_malloc((size_t)server->max_requested_calls_per_cq *
-                   sizeof(*server->requested_calls_per_cq[i]));
+    server->requested_calls_per_cq[i] = (requested_call *)gpr_malloc(
+        (size_t)server->max_requested_calls_per_cq *
+        sizeof(*server->requested_calls_per_cq[i]));
   }
   request_matcher_init(&server->unregistered_request_matcher,
                        (size_t)server->max_requested_calls_per_cq, server);
@@ -1171,7 +1174,7 @@
   if (num_registered_methods > 0) {
     slots = 2 * num_registered_methods;
     alloc = sizeof(channel_registered_method) * slots;
-    chand->registered_methods = gpr_zalloc(alloc);
+    chand->registered_methods = (channel_registered_method *)gpr_zalloc(alloc);
     for (rm = s->registered_methods; rm; rm = rm->next) {
       grpc_slice host;
       bool has_host;
@@ -1232,7 +1235,7 @@
 
 static void listener_destroy_done(grpc_exec_ctx *exec_ctx, void *s,
                                   grpc_error *error) {
-  grpc_server *server = s;
+  grpc_server *server = (grpc_server *)s;
   gpr_mu_lock(&server->mu_global);
   server->listeners_destroyed++;
   maybe_finish_shutdown(exec_ctx, server);
@@ -1264,9 +1267,9 @@
     gpr_mu_unlock(&server->mu_global);
     goto done;
   }
-  server->shutdown_tags =
-      gpr_realloc(server->shutdown_tags,
-                  sizeof(shutdown_tag) * (server->num_shutdown_tags + 1));
+  server->shutdown_tags = (shutdown_tag *)gpr_realloc(
+      server->shutdown_tags,
+      sizeof(shutdown_tag) * (server->num_shutdown_tags + 1));
   sdt = &server->shutdown_tags[server->num_shutdown_tags++];
   sdt->tag = tag;
   sdt->cq = cq;
@@ -1349,7 +1352,7 @@
                   grpc_pollset **pollsets, size_t pollset_count),
     void (*destroy)(grpc_exec_ctx *exec_ctx, grpc_server *server, void *arg,
                     grpc_closure *on_done)) {
-  listener *l = gpr_malloc(sizeof(listener));
+  listener *l = (listener *)gpr_malloc(sizeof(listener));
   l->arg = arg;
   l->start = start;
   l->destroy = destroy;
@@ -1426,7 +1429,7 @@
     grpc_completion_queue *cq_for_notification, void *tag) {
   grpc_call_error error;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  requested_call *rc = gpr_malloc(sizeof(*rc));
+  requested_call *rc = (requested_call *)gpr_malloc(sizeof(*rc));
   GRPC_API_TRACE(
       "grpc_server_request_call("
       "server=%p, call=%p, details=%p, initial_metadata=%p, "
@@ -1471,8 +1474,8 @@
     grpc_completion_queue *cq_for_notification, void *tag) {
   grpc_call_error error;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  requested_call *rc = gpr_malloc(sizeof(*rc));
-  registered_method *rm = rmp;
+  requested_call *rc = (requested_call *)gpr_malloc(sizeof(*rc));
+  registered_method *rm = (registered_method *)rmp;
   GRPC_API_TRACE(
       "grpc_server_request_registered_call("
       "server=%p, rmp=%p, call=%p, deadline=%p, initial_metadata=%p, "
diff --git a/src/core/lib/transport/connectivity_state.c b/src/core/lib/transport/connectivity_state.c
index 73a9178..f328a6c 100644
--- a/src/core/lib/transport/connectivity_state.c
+++ b/src/core/lib/transport/connectivity_state.c
@@ -148,7 +148,8 @@
       GRPC_CLOSURE_SCHED(exec_ctx, notify,
                          GRPC_ERROR_REF(tracker->current_error));
     } else {
-      grpc_connectivity_state_watcher *w = gpr_malloc(sizeof(*w));
+      grpc_connectivity_state_watcher *w =
+          (grpc_connectivity_state_watcher *)gpr_malloc(sizeof(*w));
       w->current = current;
       w->notify = notify;
       w->next = tracker->watchers;
diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c
index 2fea366..188b485 100644
--- a/src/core/lib/transport/metadata.c
+++ b/src/core/lib/transport/metadata.c
@@ -117,7 +117,8 @@
     shard->count = 0;
     gpr_atm_no_barrier_store(&shard->free_estimate, 0);
     shard->capacity = INITIAL_SHARD_CAPACITY;
-    shard->elems = gpr_zalloc(sizeof(*shard->elems) * shard->capacity);
+    shard->elems = (interned_metadata **)gpr_zalloc(sizeof(*shard->elems) *
+                                                    shard->capacity);
   }
 }
 
@@ -204,7 +205,8 @@
 
   GPR_TIMER_BEGIN("grow_mdtab", 0);
 
-  mdtab = gpr_zalloc(sizeof(interned_metadata *) * capacity);
+  mdtab =
+      (interned_metadata **)gpr_zalloc(sizeof(interned_metadata *) * capacity);
 
   for (i = 0; i < shard->capacity; i++) {
     for (md = shard->elems[i]; md; md = next) {
@@ -243,7 +245,8 @@
                               GRPC_MDELEM_STORAGE_EXTERNAL);
     }
 
-    allocated_metadata *allocated = gpr_malloc(sizeof(*allocated));
+    allocated_metadata *allocated =
+        (allocated_metadata *)gpr_malloc(sizeof(*allocated));
     allocated->key = grpc_slice_ref_internal(key);
     allocated->value = grpc_slice_ref_internal(value);
     gpr_atm_rel_store(&allocated->refcnt, 1);
@@ -292,7 +295,7 @@
   }
 
   /* not found: create a new pair */
-  md = gpr_malloc(sizeof(interned_metadata));
+  md = (interned_metadata *)gpr_malloc(sizeof(interned_metadata));
   gpr_atm_rel_store(&md->refcnt, 1);
   md->key = grpc_slice_ref_internal(key);
   md->value = grpc_slice_ref_internal(value);
diff --git a/src/core/lib/transport/service_config.c b/src/core/lib/transport/service_config.c
index 0379d00..070a13a 100644
--- a/src/core/lib/transport/service_config.c
+++ b/src/core/lib/transport/service_config.c
@@ -59,7 +59,8 @@
 };
 
 grpc_service_config* grpc_service_config_create(const char* json_string) {
-  grpc_service_config* service_config = gpr_malloc(sizeof(*service_config));
+  grpc_service_config* service_config =
+      (grpc_service_config*)gpr_malloc(sizeof(*service_config));
   service_config->json_string = gpr_strdup(json_string);
   service_config->json_tree =
       grpc_json_parse_string(service_config->json_string);
@@ -198,7 +199,8 @@
         num_entries += count_names_in_method_config_json(method);
       }
       // Populate method config table entries.
-      entries = gpr_malloc(num_entries * sizeof(grpc_slice_hash_table_entry));
+      entries = (grpc_slice_hash_table_entry*)gpr_malloc(
+          num_entries * sizeof(grpc_slice_hash_table_entry));
       size_t idx = 0;
       for (grpc_json* method = field->child; method != NULL;
            method = method->next) {
@@ -230,7 +232,7 @@
     char* path_str = grpc_slice_to_c_string(path);
     const char* sep = strrchr(path_str, '/') + 1;
     const size_t len = (size_t)(sep - path_str);
-    char* buf = gpr_malloc(len + 2);  // '*' and NUL
+    char* buf = (char*)gpr_malloc(len + 2);  // '*' and NUL
     memcpy(buf, path_str, len);
     buf[len] = '*';
     buf[len + 1] = '\0';
diff --git a/src/core/lib/transport/transport.c b/src/core/lib/transport/transport.c
index 650b055..5f6302a 100644
--- a/src/core/lib/transport/transport.c
+++ b/src/core/lib/transport/transport.c
@@ -242,13 +242,13 @@
 
 static void destroy_made_transport_op(grpc_exec_ctx *exec_ctx, void *arg,
                                       grpc_error *error) {
-  made_transport_op *op = arg;
+  made_transport_op *op = (made_transport_op *)arg;
   GRPC_CLOSURE_SCHED(exec_ctx, op->inner_on_complete, GRPC_ERROR_REF(error));
   gpr_free(op);
 }
 
 grpc_transport_op *grpc_make_transport_op(grpc_closure *on_complete) {
-  made_transport_op *op = gpr_malloc(sizeof(*op));
+  made_transport_op *op = (made_transport_op *)gpr_malloc(sizeof(*op));
   GRPC_CLOSURE_INIT(&op->outer_on_complete, destroy_made_transport_op, op,
                     grpc_schedule_on_exec_ctx);
   op->inner_on_complete = on_complete;
@@ -266,7 +266,7 @@
 
 static void destroy_made_transport_stream_op(grpc_exec_ctx *exec_ctx, void *arg,
                                              grpc_error *error) {
-  made_transport_stream_op *op = arg;
+  made_transport_stream_op *op = (made_transport_stream_op *)arg;
   grpc_closure *c = op->inner_on_complete;
   gpr_free(op);
   GRPC_CLOSURE_RUN(exec_ctx, c, GRPC_ERROR_REF(error));
@@ -274,7 +274,8 @@
 
 grpc_transport_stream_op_batch *grpc_make_transport_stream_op(
     grpc_closure *on_complete) {
-  made_transport_stream_op *op = gpr_zalloc(sizeof(*op));
+  made_transport_stream_op *op =
+      (made_transport_stream_op *)gpr_zalloc(sizeof(*op));
   op->op.payload = &op->payload;
   GRPC_CLOSURE_INIT(&op->outer_on_complete, destroy_made_transport_stream_op,
                     op, grpc_schedule_on_exec_ctx);