--- gcc/cp/tree.c.orig	2012-11-13 08:53:39.000000000 +0900
+++ gcc/cp/tree.c	2012-11-13 08:55:02.000000000 +0900
@@ -1368,8 +1368,10 @@
       break;
 
     case RECORD_TYPE:
-      if (TYPE_PTRMEMFUNC_P (*tp))
-	WALK_SUBTREE (TYPE_PTRMEMFUNC_FN_TYPE (*tp));
+      if (TYPE_PTRMEMFUNC_P (*tp)) {
+	tree tr = TYPE_PTRMEMFUNC_FN_TYPE (*tp);
+	WALK_SUBTREE (tr);
+      }
       break;
 
     default:
