diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8228ad2a136..206656d6c0c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-08-18 Uros Bizjak + + * 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. + 2009-08-18 Jason Merrill * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 442dd171342..e1644918850 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); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f2583ec8929..a0c52bdd01c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -42,7 +42,7 @@ 2009-08-17 Uros Bizjak * lib/target-supports.exp - (check_effective_target_vect_cmdline_needed):: Add alpha to the list + (check_effective_target_vect_cmdline_needed): Add alpha to the list of targets that do not need command line argument to enable SIMD. 2009-08-17 Kaveh R. Ghazi