+2019-03-05  Tom Tromey  <tromey@adacore.com>
+
+       * varobj.c (update_dynamic_varobj_children): Update.
+       (install_default_visualizer): Use reset, not release.
+       * value.c (set_internalvar): Update.
+       * dwarf2loc.c (value_of_dwarf_reg_entry): Update.
+       * common/gdb_ref_ptr.h (class ref_ptr) <release>: Add
+       ATTRIBUTE_UNUSED_RESULT.
+
 2019-03-05  Tom Tromey  <tromey@adacore.com>
 
        * remote.c (class scoped_remote_fd) <release>: Add
 
   /* Return this instance's referent, and stop managing this
      reference.  The caller is now responsible for the ownership of
      the reference.  */
-  T *release ()
+  ATTRIBUTE_UNUSED_RESULT T *release ()
   {
     T *result = m_obj;
 
 
                                               target_type, caller_frame,
                                               caller_per_cu);
 
-  release_value (target_val).release ();
   val = allocate_computed_value (type, &entry_data_value_funcs,
-                                target_val /* closure */);
+                                release_value (target_val).release ());
 
   /* Copy the referencing pointer to the new computed value.  */
   memcpy (value_contents_raw (val), value_contents_raw (outer_val),
 
 
     default:
       new_kind = INTERNALVAR_VALUE;
-      new_data.value = value_copy (val);
-      new_data.value->modifiable = 1;
+      struct value *copy = value_copy (val);
+      copy->modifiable = 1;
 
       /* Force the value to be fetched from the target now, to avoid problems
         later when this internalvar is referenced and the target is gone or
         has changed.  */
-      if (value_lazy (new_data.value))
-       value_fetch_lazy (new_data.value);
+      if (value_lazy (copy))
+       value_fetch_lazy (copy);
 
       /* Release the value from the value chain to prevent it from being
         deleted by free_all_values.  From here on this function should not
         call error () until new_data is installed into the var->u to avoid
         leaking memory.  */
-      release_value (new_data.value).release ();
+      new_data.value = release_value (copy).release ();
 
       /* Internal variables which are created from values with a dynamic
          location don't need the location property of the origin anymore.
 
          /* Release vitem->value so its lifetime is not bound to the
             execution of a command.  */
          if (item != NULL && item->value != NULL)
-           release_value (item->value).release ();
+           item->value = release_value (item->value).release ();
        }
 
       if (item == NULL)
        }
 
       if (pretty_printer == Py_None)
-       pretty_printer.release ();
+       pretty_printer.reset (nullptr);
   
       install_visualizer (var->dynamic, NULL, pretty_printer.release ());
     }