This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This patch fixes a regression on ia64 which was due to subregs_of_mode not being up-to-date when used. Since I couldn't find any use of subregs_of_mode other than local and global allocs, I've moved subregs_of_mode_init just before local-alloc created a new subregs_of_mode_finish after global-alloc, and added extra assertions to make sure it is only used when valid, to prevent other passes from accidentally using it. Bootstrapped and regtested on ia64.
* tree-pass.h (pass_subregs_of_mode_finish): New pass declaration. * regclass.c (record_subregs_of_mode): Made static, and moved before init_subregs_of_mode to compile. (cannot_change_mode_set_regs, invalid_mode_change_p): Added assertion. (finish_subregs_of_mode): New function. (pass_subregs_of_mode_finish): New pass. * rtl.h (record_subregs_of_mode): Removed. * combine.c (gen_lowpart_for_combine): Removed calls to record_subregs_of_mode. * passes.c (init_optimization_passes): Moved pass_subregs_of_mode_init just before local_alloc. New pass pass_subregs_of_mode_finish after global_alloc.
-- #pragma ident "Seongbae Park, compiler, http://seongbae.blogspot.com"
Attachment:
ia64-regression-subregs_of_mode.diff.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |