diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7c07c325d10223f3cdd43f9243f34e8f6b09c5b9..050014417a3869b12c41099aef1fedbb6df06daf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2012-11-20  Kai Tietz  <ktietz@redhat.com>
+
+	PR target/55268
+	* i386.c (ix86_mangle_decl_assembler_name): Use
+	SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME if defined.
+	* cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Rename
+	to SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME.
+
 2012-11-20  Uros Bizjak  <ubizjak@gmail.com>
 
 	* config/i386/i386.c (ix86_expand_call): Emit CLOBBERs in VOIDmode.
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
index 8455a67b7a5e6e07e36d4a9e5aa8076803a40eae..55c800e15c1d220624f7f2c1d5f42200ec11c290 100644
--- a/gcc/config/i386/cygming.h
+++ b/gcc/config/i386/cygming.h
@@ -471,7 +471,7 @@ do {						\
 
 #define TARGET_VALID_DLLIMPORT_ATTRIBUTE_P i386_pe_valid_dllimport_attribute_p
 #define TARGET_CXX_ADJUST_CLASS_AT_DEFINITION i386_pe_adjust_class_at_definition
-#define TARGET_MANGLE_DECL_ASSEMBLER_NAME i386_pe_mangle_decl_assembler_name
+#define SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME i386_pe_mangle_decl_assembler_name
 
 #undef TARGET_ASM_ASSEMBLE_VISIBILITY
 #define TARGET_ASM_ASSEMBLE_VISIBILITY i386_pe_assemble_visibility
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 84cc5c94e5164d71ee318bfe84b035db1d4d4616..8ce32be07bfbae2db42bbfd5c2bdf2229aefbdd3 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -28980,7 +28980,10 @@ ix86_mangle_decl_assembler_name (tree decl, tree id)
   /* For function version, add the target suffix to the assembler name.  */
   if (TREE_CODE (decl) == FUNCTION_DECL
       && DECL_FUNCTION_VERSIONED (decl))
-    return ix86_mangle_function_version_assembler_name (decl, id);
+    id = ix86_mangle_function_version_assembler_name (decl, id);
+#ifdef SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME
+  id = SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME (decl, id);
+#endif
 
   return id;
 }