diff --git a/gdb/inferior.c b/gdb/inferior.c
index 65863440b9c0f2cb189c371501c00ebd1ac78b0a..a1e3c79d8a200a4ef9f46f8dea3e9d7fed516330 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -961,7 +961,7 @@ clone_inferior_command (const char *args, int from_tty)
 
       /* If the original inferior had a user specified target
 	 description, make the clone use it too.  */
-      if (target_desc_info_from_user_p (&inf->tdesc_info))
+      if (inf->tdesc_info.from_user_p ())
 	inf->tdesc_info = orginf->tdesc_info;
 
       clone_program_space (pspace, orginf->pspace);
diff --git a/gdb/inferior.h b/gdb/inferior.h
index d902881bfe248404b7d65e0cbcf18c80756f6520..bac483f0f78d2e76d4b9ba314fc05411619751d5 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -345,6 +345,11 @@ extern void switch_to_inferior_no_thread (inferior *inf);
 
 struct target_desc_info
 {
+  /* Returns true if INFO indicates the target description had been supplied by
+     the user.  */
+  bool from_user_p ()
+  { return !this->filename.empty (); }
+
   /* A flag indicating that a description has already been fetched
      from the target, so it should not be queried again.  */
   bool fetched = false;
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 6defd5bbe8632cdd816529f0d6d0551484f1091d..b08a185dfa211cb0a6dac32307aae36098163613 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -451,14 +451,6 @@ get_arch_data (struct gdbarch *gdbarch)
   return result;
 }
 
-/* See target-descriptions.h.  */
-
-int
-target_desc_info_from_user_p (struct target_desc_info *info)
-{
-  return info != nullptr && !info->filename.empty ();
-}
-
 /* The string manipulated by the "set tdesc filename ..." command.  */
 
 static std::string tdesc_filename_cmd_string;
diff --git a/gdb/target-descriptions.h b/gdb/target-descriptions.h
index b835e144c6809d6d2ef43081076b20acb55f237c..ee48fdfaa0c234e8ce214c327e4866301d8b1e31 100644
--- a/gdb/target-descriptions.h
+++ b/gdb/target-descriptions.h
@@ -26,9 +26,6 @@
 
 struct tdesc_arch_data;
 struct target_ops;
-/* An inferior's target description info is stored in this opaque
-   object.  There's one such object per inferior.  */
-struct target_desc_info;
 struct inferior;
 
 /* Fetch the current inferior's description, and switch its current
@@ -48,11 +45,6 @@ void target_clear_description (void);
 
 const struct target_desc *target_current_description (void);
 
-/* Returns true if INFO indicates the target description had been
-   supplied by the user.  */
-
-int target_desc_info_from_user_p (struct target_desc_info *info);
-
 /* Record architecture-specific functions to call for pseudo-register
    support.  If tdesc_use_registers is called and gdbarch_num_pseudo_regs
    is greater than zero, then these should be called as well.