const struct value_print_options *);
 
 static void cp_print_value (struct type *, struct type *,
-                           const gdb_byte *, LONGEST,
+                           LONGEST,
                            CORE_ADDR, struct ui_file *,
                            int, struct value *,
                            const struct value_print_options *,
 
 void
 cp_print_value_fields (struct type *type, struct type *real_type,
-                      const gdb_byte *valaddr, LONGEST offset,
+                      LONGEST offset,
                       CORE_ADDR address, struct ui_file *stream,
                       int recurse, struct value *val,
                       const struct value_print_options *options,
      duplicates of virtual baseclasses.  */
 
   if (n_baseclasses > 0)
-    cp_print_value (type, real_type, valaddr, 
+    cp_print_value (type, real_type,
                    offset, address, stream,
                    recurse + 1, val, options,
                    dont_print_vb);
       vptr_fieldno = get_vptr_fieldno (type, &vptr_basetype);
       for (i = n_baseclasses; i < len; i++)
        {
+         const gdb_byte *valaddr = value_contents_for_printing (val);
+
          /* If requested, skip printing of static fields.  */
          if (!options->static_field_print
              && field_is_static (&TYPE_FIELD (type, i)))
   if (!real_type)
     real_type = type;
 
-  cp_print_value_fields (type, real_type, valaddr, offset,
+  cp_print_value_fields (type, real_type, offset,
                         address, stream, recurse, val, options,
                         dont_print_vb, dont_print_statmem);
 }
 
 static void
 cp_print_value (struct type *type, struct type *real_type,
-               const gdb_byte *valaddr, LONGEST offset,
+               LONGEST offset,
                CORE_ADDR address, struct ui_file *stream,
                int recurse, struct value *val,
                const struct value_print_options *options,
   int i, n_baseclasses = TYPE_N_BASECLASSES (type);
   LONGEST thisoffset;
   struct type *thistype;
+  const gdb_byte *valaddr = value_contents_for_printing (val);
 
   if (dont_print_vb == 0)
     {
                                                   current_language);
 
          if (!result)
-           cp_print_value_fields (baseclass, thistype, base_valaddr,
+           cp_print_value_fields (baseclass, thistype,
                                   thisoffset + boffset,
                                   value_address (base_val),
                                   stream, recurse, base_val, options,
                    sizeof (CORE_ADDR));
       type = check_typedef (type);
       cp_print_value_fields (type, value_enclosing_type (val),
-                            value_contents_for_printing (val),
                             value_embedded_offset (val), addr,
                             stream, recurse, val,
                             options, NULL, 1);