From 0cfef6c5572d909b1b2fcd28df32132a8dba1e0a Mon Sep 17 00:00:00 2001 From: amonakov Date: Mon, 22 Nov 2010 10:35:06 +0000 Subject: PR rtl-optimization/45652 * alias.c (get_reg_base_value): New. * rtl.h (get_reg_base_value): Add prototype. * sel-sched.c (init_regs_for_mode): Use it. Don't use registers with non-null REG_BASE_VALUE for renaming. testsuite: * gcc.dg/pr45652.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167025 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/sel-sched.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/sel-sched.c') diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index cb3c379524e..3b5603c7efa 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -1139,6 +1139,9 @@ init_regs_for_mode (enum machine_mode mode) /* Can't use regs which aren't saved by the prologue. */ || !TEST_HARD_REG_BIT (sel_hrd.regs_ever_used, cur_reg + i) + /* Can't use regs with non-null REG_BASE_VALUE, because adjusting + it affects aliasing globally and invalidates all AV sets. */ + || get_reg_base_value (cur_reg + i) #ifdef LEAF_REGISTERS /* We can't use a non-leaf register if we're in a leaf function. */ -- cgit v1.2.3