Commit 6ba3b214 by Richard Henderson Committed by Richard Henderson

varasm.c (restore_varasm_status): New.

        * varasm.c (restore_varasm_status): New.
        * function.h: Declare it.
        * function.c (pop_function_context_from): Call it.

From-SVN: r46080
parent 31ed8fea
2001-10-08 Richard Henderson <rth@redhat.com> 2001-10-08 Richard Henderson <rth@redhat.com>
* varasm.c (restore_varasm_status): New.
* function.h: Declare it.
* function.c (pop_function_context_from): Call it.
2001-10-08 Richard Henderson <rth@redhat.com>
* c-common.h (struct c_lang_decl): Add declared_inline. * c-common.h (struct c_lang_decl): Add declared_inline.
* c-tree.h (DECL_DECLARED_INLINE_P): New. * c-tree.h (DECL_DECLARED_INLINE_P): New.
* c-lang.c (c_disregard_inline_limits): Use it. * c-lang.c (c_disregard_inline_limits): Use it.
......
...@@ -386,6 +386,7 @@ pop_function_context_from (context) ...@@ -386,6 +386,7 @@ pop_function_context_from (context)
reg_renumber = 0; reg_renumber = 0;
restore_emit_status (p); restore_emit_status (p);
restore_varasm_status (p);
if (restore_lang_status) if (restore_lang_status)
(*restore_lang_status) (p); (*restore_lang_status) (p);
......
...@@ -592,6 +592,7 @@ extern void free_after_parsing PARAMS ((struct function *)); ...@@ -592,6 +592,7 @@ extern void free_after_parsing PARAMS ((struct function *));
extern void free_after_compilation PARAMS ((struct function *)); extern void free_after_compilation PARAMS ((struct function *));
extern void init_varasm_status PARAMS ((struct function *)); extern void init_varasm_status PARAMS ((struct function *));
extern void restore_varasm_status PARAMS ((struct function *));
extern void free_varasm_status PARAMS ((struct function *)); extern void free_varasm_status PARAMS ((struct function *));
extern void free_emit_status PARAMS ((struct function *)); extern void free_emit_status PARAMS ((struct function *));
extern void free_stmt_status PARAMS ((struct function *)); extern void free_stmt_status PARAMS ((struct function *));
......
...@@ -3493,6 +3493,23 @@ init_varasm_status (f) ...@@ -3493,6 +3493,23 @@ init_varasm_status (f)
p->x_const_double_chain = 0; p->x_const_double_chain = 0;
} }
/* Nested functions diddle with our const_double_chain via
clear_const_double_mem and const_tiny_rtx. Remove these
entries from our const_double_chain. */
void
restore_varasm_status (f)
struct function *f;
{
rtx *p = &f->varasm->x_const_double_chain;
while (*p)
if (CONST_DOUBLE_MEM (*p) == cc0_rtx)
*p = CONST_DOUBLE_CHAIN (*p);
else
p = &CONST_DOUBLE_CHAIN (*p);
}
/* Mark PC for GC. */ /* Mark PC for GC. */
static void static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment