aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/alpha
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2009-08-18 19:50:44 +0200
committerUros Bizjak <uros@gcc.gnu.org>2009-08-18 19:50:44 +0200
commite72cee90d52ac45df305c99894908df0bf4be392 (patch)
treee33e4cfed8c9bcec15d96424da15db15f4b299bc /gcc/config/alpha
parente31bcd1b96a5d6236da6cb4965b112773878e35d (diff)
downloadgcc-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.c8
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);