diff --git a/vp8/decoder/decodemv.c b/vp8/decoder/decodemv.c
index 9de6ec0c7f793ecb726fba147f24317a8ab30cf9..56036787fc11f744ce0908be9384e558f67484b5 100644
--- a/vp8/decoder/decodemv.c
+++ b/vp8/decoder/decodemv.c
@@ -762,6 +762,8 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
           int mv_contz;
           int blockmode;
 
+          second_leftmv.as_int = 0;
+          second_abovemv.as_int = 0;
           k = vp8_mbsplit_offset[s][j];
 
           leftmv.as_int = left_block_mv(mi, k);
diff --git a/vp8/encoder/firstpass.c b/vp8/encoder/firstpass.c
index 1e5d4ef5cb45cb886947a4c5e06b78b739d75d59..fdc85a95d8db0ff428279696a2ab4b4a1d718d6e 100644
--- a/vp8/encoder/firstpass.c
+++ b/vp8/encoder/firstpass.c
@@ -1965,6 +1965,8 @@ void vp8_second_pass(VP8_COMP *cpi) {
 
   vp8_clear_system_state();
 
+  vpx_memset(&this_frame, 0, sizeof(FIRSTPASS_STATS));
+
   if (EOF == input_stats(cpi, &this_frame))
     return;
 
diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c
index 3653cc18ef009b2af6aac04291e5ffaa54592e27..e9e5550a2a514a7cfa4ec9e6df7ad3a2414c04bc 100644
--- a/vp8/encoder/rdopt.c
+++ b/vp8/encoder/rdopt.c
@@ -1643,6 +1643,7 @@ static int labels2mode(MACROBLOCK *x, int const *labelings, int which_label,
       if (m == ABOVE4X4) { // replace above with left if same
         int_mv left_mv, left_second_mv;
 
+        left_second_mv.as_int = 0;
         left_mv.as_int = col ? d[-1].bmi.as_mv.first.as_int :
                          left_block_mv(mic, i);
         if (mbmi->second_ref_frame)
@@ -2717,6 +2718,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
   unsigned int ref_costs[MAX_REF_FRAMES];
   int_mv seg_mvs[BLOCK_MAX_SEGMENTS - 1][16 /* n_blocks */][MAX_REF_FRAMES - 1];
 
+  vpx_memset(mode8x8, 0, sizeof(mode8x8));
   vpx_memset(&frame_mv, 0, sizeof(frame_mv));
   vpx_memset(&best_mbmode, 0, sizeof(best_mbmode));
   vpx_memset(&best_bmodes, 0, sizeof(best_bmodes));