Hello! The problem was that exception_receiver pattern recorded a stack slot that referred to virtual-stack-vars. Recent changes moved generation of exception landing pads after virtuals were instantiated, so in bbpart pass we emitted:
(insn 262 266 263 51 (unspec_volatile [ (mem/c:DI (plus:DI (reg/f:DI 65 virtual-stack-vars) (const_int 16 [0x10])) [0 S8 A64]) ] UNSPECV_EHR) 278 {*exception_receiver_2} (nil)) Later passes choked on uninstantiated register. Attached patch defines TARGET_INSTANTIATE_DECLS to also instantiate registers in saved stack slot address. 2011-08-06 Uros Bizjak <ubiz...@gmail.com> PR target/50001 * config/alpha/alpha.c (alpha_instantiate_decls): New function. (TARGET_INSTANTIATE_DECLS): New define. Patch was bootstrapped and regtested on alphaev68-pc-linux-gnu, where fixes g++.dg/tree-prof/partition1.C ICEs in the testsuite. Patch was committed to SVN mainline, will be also committed to release branches. Uros.
Index: alpha.c =================================================================== --- alpha.c (revision 177507) +++ alpha.c (working copy) @@ -4632,6 +4632,13 @@ alpha_gp_save_rtx (void) return m; } +static void +alpha_instantiate_decls (void) +{ + if (cfun->machine->gp_save_rtx != NULL_RTX) + instantiate_decl_rtl (cfun->machine->gp_save_rtx); +} + static int alpha_ra_ever_killed (void) { @@ -9811,6 +9818,9 @@ alpha_conditional_register_usage (void) #undef TARGET_TRAMPOLINE_INIT #define TARGET_TRAMPOLINE_INIT alpha_trampoline_init +#undef TARGET_INSTANTIATE_DECLS +#define TARGET_INSTANTIATE_DECLS alpha_instantiate_decls + #undef TARGET_SECONDARY_RELOAD #define TARGET_SECONDARY_RELOAD alpha_secondary_reload