aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorFalk Hueffner <falk.hueffner@student.uni-tuebingen.de>2003-02-14 14:23:48 -0800
committerRichard Henderson <rth@gcc.gnu.org>2003-02-14 14:23:48 -0800
commitce65116b73931409aa6d9ba7ed3e81a686298ba6 (patch)
treebc83ac912c675b861d2063805a41e52a80ee42e4 /gcc/reload1.c
parent394a76de7328db70e7511ebb5b271d76e9bac2bf (diff)
downloadgcc-ce65116b73931409aa6d9ba7ed3e81a686298ba6.zip
gcc-ce65116b73931409aa6d9ba7ed3e81a686298ba6.tar.gz
gcc-ce65116b73931409aa6d9ba7ed3e81a686298ba6.tar.bz2
re PR rtl-optimization/7702 (gcc-3.2 optimization problem on a DEC alpha under OSF1)
PR optimization/7702 * reload1.c (reload_cse_simplify_set): Honor CANNOT_CHANGE_MODE_CLASS. From-SVN: r62921
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index e272640..441a447 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -8282,7 +8282,13 @@ reload_cse_simplify_set (set, insn)
{
#ifdef LOAD_EXTEND_OP
if (GET_MODE_BITSIZE (GET_MODE (SET_DEST (set))) < BITS_PER_WORD
- && extend_op != NIL)
+ && extend_op != NIL
+#ifdef CANNOT_CHANGE_MODE_CLASS
+ && !CANNOT_CHANGE_MODE_CLASS (GET_MODE (SET_DEST (set)),
+ word_mode,
+ REGNO_REG_CLASS (REGNO (SET_DEST (set))))
+#endif
+ )
{
rtx wide_dest = gen_rtx_REG (word_mode, REGNO (SET_DEST (set)));
ORIGINAL_REGNO (wide_dest) = ORIGINAL_REGNO (SET_DEST (set));