diff options
Diffstat (limited to 'gcc/java/parse.h')
-rw-r--r-- | gcc/java/parse.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/gcc/java/parse.h b/gcc/java/parse.h index 0f0aa9b..40fad4a 100644 --- a/gcc/java/parse.h +++ b/gcc/java/parse.h @@ -111,7 +111,6 @@ extern tree stabilize_reference PARAMS ((tree)); /* Misc. */ #define exit_java_complete_class() \ { \ - pop_obstacks (); \ return; \ } @@ -229,11 +228,14 @@ extern tree stabilize_reference PARAMS ((tree)); scope local variables. */ #define MANGLE_OUTER_LOCAL_VARIABLE_NAME(N, O) \ { \ + char *mangled_name; \ obstack_grow (&temporary_obstack, "val$", 4); \ - obstack_grow (&temporary_obstack, \ + obstack_grow (&temporary_obstack, \ IDENTIFIER_POINTER ((O)), IDENTIFIER_LENGTH ((O))); \ obstack_1grow (&temporary_obstack, '\0'); \ - (N) = obstack_finish (&temporary_obstack); \ + mangled_name = obstack_finish (&temporary_obstack); \ + (N) = get_identifier (mangled_name); \ + obstack_free (&temporary_obstack, mangled_name); \ } /* Build the string parm$<O> and store in into the identifier N. This @@ -241,19 +243,25 @@ extern tree stabilize_reference PARAMS ((tree)); initialize outer scope aliases. */ #define MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_ID(N, O) \ { \ + char *mangled_name; \ obstack_grow (&temporary_obstack, "parm$", 5); \ obstack_grow (&temporary_obstack, \ IDENTIFIER_POINTER ((O)), IDENTIFIER_LENGTH ((O))); \ obstack_1grow (&temporary_obstack, '\0'); \ - (N) = obstack_finish (&temporary_obstack); \ + mangled_name = obstack_finish (&temporary_obstack); \ + (N) = get_identifier (mangled_name); \ + obstack_free (&temporary_obstack, mangled_name); \ } #define MANGLE_ALIAS_INITIALIZER_PARAMETER_NAME_STR(N, S) \ { \ + char *mangled_name; \ obstack_grow (&temporary_obstack, "parm$", 5); \ obstack_grow (&temporary_obstack, (S), strlen ((S))); \ obstack_1grow (&temporary_obstack, '\0'); \ - (N) = obstack_finish (&temporary_obstack); \ + mangled_name = obstack_finish (&temporary_obstack); \ + (N) = get_identifier (mangled_name); \ + obstack_free (&temporary_obstack, mangled_name); \ } /* Skip THIS and artificial parameters found in function decl M and |