aboutsummaryrefslogtreecommitdiff
path: root/gcc/sel-sched.c
diff options
context:
space:
mode:
authoramonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-22 10:35:06 +0000
committeramonakov <amonakov@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-22 10:35:06 +0000
commit0cfef6c5572d909b1b2fcd28df32132a8dba1e0a (patch)
treee9e9c058158ad6ffd6c71ebc44e91416cfc12a90 /gcc/sel-sched.c
parent8fda32621c0fa3d39858a5fabe8ca5d7a17ee385 (diff)
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
Diffstat (limited to 'gcc/sel-sched.c')
-rw-r--r--gcc/sel-sched.c3
1 files changed, 3 insertions, 0 deletions
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. */