Index: c-decl.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/c-decl.c,v retrieving revision 1.684 diff -u -p -r1.684 c-decl.c --- c-decl.c 9 Sep 2005 00:46:36 -0000 1.684 +++ c-decl.c 14 Sep 2005 16:14:15 -0000 @@ -3426,8 +3426,6 @@ finish_decl (tree decl, tree init, tree && !TREE_STATIC (decl)) warning (0, "ignoring asm-specifier for non-static local " "variable %q+D", decl); - else if (C_DECL_REGISTER (decl)) - change_decl_assembler_name (decl, get_identifier (asmspec)); else set_user_assembler_name (decl, asmspec); } Index: varasm.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/varasm.c,v retrieving revision 1.527 diff -u -p -r1.527 varasm.c --- varasm.c 6 Sep 2005 02:04:54 -0000 1.527 +++ varasm.c 14 Sep 2005 16:14:20 -0000 @@ -923,10 +923,16 @@ make_decl_rtl (tree decl) } name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)); - - if (TREE_CODE (decl) != FUNCTION_DECL && DECL_REGISTER (decl)) + + if (name[0] != '*' && TREE_CODE (decl) != FUNCTION_DECL + && DECL_REGISTER (decl)) + { + error ("register name not specified for %q+D", decl); + } + else if (TREE_CODE (decl) != FUNCTION_DECL && DECL_REGISTER (decl)) { - reg_number = decode_reg_name (name); + const char *asmspec = name+1; + reg_number = decode_reg_name (asmspec); /* First detect errors in declaring global registers. */ if (reg_number == -1) error ("register name not specified for %q+D", decl); Index: cp/decl.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/cp/decl.c,v retrieving revision 1.1426 diff -u -p -r1.1426 decl.c --- cp/decl.c 12 Sep 2005 19:53:59 -0000 1.1426 +++ cp/decl.c 14 Sep 2005 16:14:25 -0000 @@ -4661,7 +4661,7 @@ make_rtl_for_nonlocal_decl (tree decl, t placed in a particular register. */ if (TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl)) { - change_decl_assembler_name (decl, get_identifier (asmspec)); + set_user_assembler_name (decl, asmspec); DECL_HARD_REGISTER (decl) = 1; } else