aboutsummaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
authorAlexander Monakov <amonakov@ispras.ru>2010-11-22 13:35:06 +0300
committerAlexander Monakov <amonakov@gcc.gnu.org>2010-11-22 13:35:06 +0300
commit8fd0a474882a4e7419e84808f8a52f0feb667b49 (patch)
treee9e9c058158ad6ffd6c71ebc44e91416cfc12a90 /gcc/alias.c
parent81ae7e14a29f89864f04cb966aa5bb5f52a29c8d (diff)
downloadgcc-8fd0a474882a4e7419e84808f8a52f0feb667b49.zip
gcc-8fd0a474882a4e7419e84808f8a52f0feb667b49.tar.gz
gcc-8fd0a474882a4e7419e84808f8a52f0feb667b49.tar.bz2
re PR rtl-optimization/45652 (gcc.dg/compat/scalar-by-value-3 FAILs with -O2 -fselective-scheduling2)
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. From-SVN: r167025
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/alias.c b/gcc/alias.c
index 2a87797..5b04f85 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -1291,6 +1291,14 @@ record_set (rtx dest, const_rtx set, void *data ATTRIBUTE_UNUSED)
reg_seen[regno] = 1;
}
+/* Return REG_BASE_VALUE for REGNO. Selective scheduler uses this to avoid
+ using hard registers with non-null REG_BASE_VALUE for renaming. */
+rtx
+get_reg_base_value (unsigned int regno)
+{
+ return VEC_index (rtx, reg_base_value, regno);
+}
+
/* If a value is known for REGNO, return it. */
rtx