Index: gcc/fortran/class.c
===================================================================
--- gcc/fortran/class.c	(revision 194330)
+++ gcc/fortran/class.c	(working copy)
@@ -527,17 +527,17 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_a
   rank = !(*as) || (*as)->rank == -1 ? GFC_MAX_DIMENSIONS : (*as)->rank;
   get_unique_hashed_string (tname, ts->u.derived);
   if ((*as) && attr->allocatable)
-    sprintf (name, "__class_%s_%d_%da", tname, rank, (*as)->corank);
+    sprintf (name, GFC_PREFIX ("class_%s_%d_%da"), tname, rank, (*as)->corank);
   else if ((*as) && attr->pointer)
-    sprintf (name, "__class_%s_%d_%dp", tname, rank, (*as)->corank);
+    sprintf (name, GFC_PREFIX ("class_%s_%d_%dp"), tname, rank, (*as)->corank);
   else if ((*as))
-    sprintf (name, "__class_%s_%d_%d", tname, rank, (*as)->corank);
+    sprintf (name, GFC_PREFIX ("class_%s_%d_%d"), tname, rank, (*as)->corank);
   else if (attr->pointer)
-    sprintf (name, "__class_%s_p", tname);
+    sprintf (name, GFC_PREFIX ("class_%s_p"), tname);
   else if (attr->allocatable)
-    sprintf (name, "__class_%s_a", tname);
+    sprintf (name, GFC_PREFIX ("class_%s_a"), tname);
   else
-    sprintf (name, "__class_%s", tname);
+    sprintf (name, GFC_PREFIX ("class_%s"), tname);
 
   gfc_find_symbol (name, ts->u.derived->ns, 0, &fclass);
   if (fclass == NULL)
@@ -905,7 +905,7 @@ finalization_scalarizer (gfc_symbol *idx, gfc_symb
   /* TRANSFER.  */
   expr2 = gfc_get_expr ();
   expr2->expr_type = EXPR_FUNCTION;
-  expr2->value.function.name = "__transfer0";
+  expr2->value.function.name = GFC_PREFIX ("transfer0");
   expr2->value.function.isym
 	    = gfc_intrinsic_function_by_id (GFC_ISYM_TRANSFER);
   /* Set symtree for -fdump-parse-tree.  */
@@ -1337,7 +1337,7 @@ generate_finalization_wrapper (gfc_symbol *derived
   sub_ns->resolved = 1;
 
   /* Set up the procedure symbol.  */
-  sprintf (name, "__final_%s", tname);
+  sprintf (name, GFC_PREFIX ("final_%s"), tname);
   gfc_get_symbol (name, sub_ns, &final);
   sub_ns->proc_name = final;
   final->attr.flavor = FL_PROCEDURE;
@@ -1780,7 +1780,7 @@ gfc_find_derived_vtab (gfc_symbol *derived)
       char name[GFC_MAX_SYMBOL_LEN+1], tname[GFC_MAX_SYMBOL_LEN+1];
 
       get_unique_hashed_string (tname, derived);
-      sprintf (name, "__vtab_%s", tname);
+      sprintf (name, GFC_PREFIX ("vtab_%s"), tname);
 
       /* Look for the vtab symbol in various namespaces.  */
       gfc_find_symbol (name, gfc_current_ns, 0, &vtab);
@@ -1801,7 +1801,7 @@ gfc_find_derived_vtab (gfc_symbol *derived)
 	  vtab->attr.vtab = 1;
 	  vtab->attr.access = ACCESS_PUBLIC;
 	  gfc_set_sym_referenced (vtab);
-	  sprintf (name, "__vtype_%s", tname);
+	  sprintf (name, GFC_PREFIX ("vtype_%s"), tname);
 
 	  gfc_find_symbol (name, ns, 0, &vtype);
 	  if (vtype == NULL)
@@ -1883,7 +1883,7 @@ gfc_find_derived_vtab (gfc_symbol *derived)
 	      else
 		{
 		  /* Construct default initialization variable.  */
-		  sprintf (name, "__def_init_%s", tname);
+		  sprintf (name, GFC_PREFIX ("def_init_%s"), tname);
 		  gfc_get_symbol (name, ns, &def_init);
 		  def_init->attr.target = 1;
 		  def_init->attr.artificial = 1;
@@ -1915,7 +1915,7 @@ gfc_find_derived_vtab (gfc_symbol *derived)
 		  ns->contained = sub_ns;
 		  sub_ns->resolved = 1;
 		  /* Set up procedure symbol.  */
-		  sprintf (name, "__copy_%s", tname);
+		  sprintf (name, GFC_PREFIX ("copy_%s"), tname);
 		  gfc_get_symbol (name, sub_ns, &copy);
 		  sub_ns->proc_name = copy;
 		  copy->attr.flavor = FL_PROCEDURE;
Index: gcc/fortran/gfortran.h
===================================================================
--- gcc/fortran/gfortran.h	(revision 194330)
+++ gcc/fortran/gfortran.h	(working copy)
@@ -63,6 +63,9 @@ along with GCC; see the file COPYING3.  If not see
 #define PREFIX(x) "_gfortran_" x
 #define PREFIX_LEN 10
 
+/* A prefix for internal variables, which are not user-visible.  */
+#define GFC_PREFIX(x) "_F" x
+
 #define BLANK_COMMON_NAME "__BLNK__"
 
 /* Macro to initialize an mstring structure.  */
Index: gcc/fortran/match.c
===================================================================
--- gcc/fortran/match.c	(revision 194330)
+++ gcc/fortran/match.c	(working copy)
@@ -5225,9 +5225,9 @@ select_type_set_tmp (gfc_typespec *ts)
     return;
 
   if (ts->type == BT_CLASS)
-    sprintf (name, "__tmp_class_%s", ts->u.derived->name);
+    sprintf (name, GFC_PREFIX ("tmp_class_%s"), ts->u.derived->name);
   else
-    sprintf (name, "__tmp_type_%s", ts->u.derived->name);
+    sprintf (name, GFC_PREFIX ("tmp_type_%s"), ts->u.derived->name);
   gfc_get_sym_tree (name, gfc_current_ns, &tmp, false);
   gfc_add_type (tmp->n.sym, ts, NULL);
 
Index: gcc/fortran/module.c
===================================================================
--- gcc/fortran/module.c	(revision 194330)
+++ gcc/fortran/module.c	(working copy)
@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Don't put any single quote (') in MOD_VERSION, 
    if yout want it to be recognized.  */
-#define MOD_VERSION "9"
+#define MOD_VERSION "10"
 
 
 /* Structure that describes a position within a module file.  */
@@ -4405,7 +4405,7 @@ load_needed (pointer_info *p)
      but not used warnings; don't mark internal symbols such as __vtab,
      __def_init etc. Only mark them if they have been explicitly loaded.  */
 
-  if (only_flag && sym->name[0] != '_' && sym->name[1] != '_')
+  if (only_flag && sym->name[0] != '_' && sym->name[1] != 'F')
     {
       gfc_use_rename *u;
 
@@ -4647,8 +4647,8 @@ read_module (void)
 
 	  /* Exception: Always import vtabs & vtypes.  */
 	  if (p == NULL && name[0] == '_'
-	      && (strncmp (name, "__vtab_", 5) == 0
-		  || strncmp (name, "__vtype_", 6) == 0))
+	      && (strncmp (name, GFC_PREFIX ("vtab_"), 5) == 0
+		  || strncmp (name, GFC_PREFIX("vtype_"), 6) == 0))
 	    p = name;
 
 	  /* Skip symtree nodes not in an ONLY clause, unless there
@@ -4715,8 +4715,8 @@ read_module (void)
 		sym->attr.use_rename = 1;
 
 	      if (name[0] != '_'
-		  || (strncmp (name, "__vtab_", 5) != 0
-		      && strncmp (name, "__vtype_", 6) != 0))
+		  || (strncmp (name, GFC_PREFIX ("vtab_"), 5) != 0
+		      && strncmp (name, GFC_PREFIX ("vtype_"), 6) != 0))
 		sym->attr.use_only = only_flag;
 
 	      /* Store the symtree pointing to this symbol.  */
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c	(revision 194330)
+++ gcc/fortran/resolve.c	(working copy)
@@ -8439,9 +8439,9 @@ resolve_select_type (gfc_code *code, gfc_namespace
 	 'global' one).  */
 
       if (c->ts.type == BT_CLASS)
-	sprintf (name, "__tmp_class_%s", c->ts.u.derived->name);
+	sprintf (name, GFC_PREFIX ("tmp_class_%s"), c->ts.u.derived->name);
       else
-	sprintf (name, "__tmp_type_%s", c->ts.u.derived->name);
+	sprintf (name, GFC_PREFIX ("tmp_type_%s"), c->ts.u.derived->name);
       st = gfc_find_symtree (ns->sym_root, name);
       gcc_assert (st->n.sym->assoc);
       st->n.sym->assoc->target = gfc_get_variable_expr (code->expr1->symtree);
Index: gcc/fortran/trans-decl.c
===================================================================
--- gcc/fortran/trans-decl.c	(revision 194330)
+++ gcc/fortran/trans-decl.c	(working copy)
@@ -1091,9 +1091,9 @@ gfc_create_string_length (gfc_symbol * sym)
 
       /* Also prefix the mangled name.  */
       if (sym->module)
-	name = gfc_get_string (".__%s_MOD_%s", sym->module, sym->name);
+	name = gfc_get_string (GFC_PREFIX ("%s_MOD_%s"), sym->module, sym->name);
       else
-	name = gfc_get_string (".%s", sym->name);
+	name = gfc_get_string (GFC_PREFIX ("%s"), sym->name);
 
       length = build_decl (input_location,
 			   VAR_DECL, get_identifier (name),
@@ -1482,7 +1482,7 @@ gfc_get_symbol_decl (gfc_symbol * sym)
     DECL_BY_REFERENCE (decl) = 1;
 
   if (sym->attr.vtab
-      || (sym->name[0] == '_' && strncmp ("__def_init", sym->name, 10) == 0))
+      || (sym->name[0] == '_' && strncmp (GFC_PREFIX ("def_init"), sym->name, 10) == 0))
     TREE_READONLY (decl) = 1;
 
   return decl;
@@ -1978,7 +1978,7 @@ create_function_arglist (gfc_symbol * sym)
 
 	  length = build_decl (input_location,
 			       PARM_DECL,
-			       get_identifier (".__result"),
+			       get_identifier (GFC_PREFIX ("len__result")),
 			       len_type);
 	  if (!sym->ts.u.cl->length)
 	    {
@@ -2001,7 +2001,7 @@ create_function_arglist (gfc_symbol * sym)
 		{
 		  tree len = build_decl (input_location,
 					 VAR_DECL,
-					 get_identifier ("..__result"),
+					 get_identifier (GFC_PREFIX ("len2__result")),
 					 gfc_charlen_type_node);
 		  DECL_ARTIFICIAL (len) = 1;
 		  TREE_USED (len) = 1;
Index: gcc/fortran/trans-stmt.c
===================================================================
--- gcc/fortran/trans-stmt.c	(revision 194330)
+++ gcc/fortran/trans-stmt.c	(working copy)
@@ -1378,7 +1378,7 @@ gfc_trans_simple_do (gfc_code * code, stmtblock_t
   /* Save value for do-tinkering checking. */
   if (gfc_option.rtcheck & GFC_RTCHECK_DO)
     {
-      saved_dovar = gfc_create_var (type, ".saved_dovar");
+      saved_dovar = gfc_create_var (type, GFC_PREFIX ("saved_dovar"));
       gfc_add_modify_loc (loc, pblock, saved_dovar, dovar);
     }
 
@@ -1583,7 +1583,7 @@ gfc_trans_do (gfc_code * code, tree exit_cond)
   /* Save value for do-tinkering checking. */
   if (gfc_option.rtcheck & GFC_RTCHECK_DO)
     {
-      saved_dovar = gfc_create_var (type, ".saved_dovar");
+      saved_dovar = gfc_create_var (type, GFC_PREFIX ("saved_dovar"));
       gfc_add_modify_loc (loc, &block, saved_dovar, dovar);
     }
 
