diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2009-08-18 19:50:44 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2009-08-18 19:50:44 +0200 |
commit | e72cee90d52ac45df305c99894908df0bf4be392 (patch) | |
tree | e33e4cfed8c9bcec15d96424da15db15f4b299bc /gcc/config/alpha | |
parent | e31bcd1b96a5d6236da6cb4965b112773878e35d (diff) | |
download | gcc-e72cee90d52ac45df305c99894908df0bf4be392.zip gcc-e72cee90d52ac45df305c99894908df0bf4be392.tar.gz gcc-e72cee90d52ac45df305c99894908df0bf4be392.tar.bz2 |
alpha.c (alpha_output_mi_thunk_osf): Allocate insn locators before emit_insn is called.
* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
locators before emit_insn is called. Remove assert that
cfun->is_thunk.
(alpha_end_function): Clear crtl->emit structure and free insn
locators if cfun->is_thunk is true.
From-SVN: r150883
Diffstat (limited to 'gcc/config/alpha')
-rw-r--r-- | gcc/config/alpha/alpha.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 442dd171..e164491 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -8615,7 +8615,10 @@ alpha_end_function (FILE *file, const char *fnname, tree decl ATTRIBUTE_UNUSED) #if TARGET_ABI_OSF if (cfun->is_thunk) - free_after_compilation (cfun); + { + memset (&crtl->emit, 0, sizeof (struct emit_status)); + insn_locators_free (); + } #endif #if TARGET_ABI_OPEN_VMS @@ -8666,7 +8669,7 @@ alpha_output_mi_thunk_osf (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, HOST_WIDE_INT hi, lo; rtx this_rtx, insn, funexp; - gcc_assert (cfun->is_thunk); + insn_locators_alloc (); /* We always require a valid GP. */ emit_insn (gen_prologue_ldgp ()); @@ -8744,7 +8747,6 @@ alpha_output_mi_thunk_osf (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, instruction scheduling worth while. Note that use_thunk calls assemble_start_function and assemble_end_function. */ insn = get_insns (); - insn_locators_alloc (); shorten_branches (insn); final_start_function (insn, file, 1); final (insn, file, 1); |