aboutsummaryrefslogtreecommitdiff
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
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
-rw-r--r--gcc/ChangeLog26
-rw-r--r--gcc/reload1.c8
2 files changed, 23 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 34128fe..c8021cd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-02-14 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
+
+ PR optimization/7702
+ * reload1.c (reload_cse_simplify_set): Honor
+ CANNOT_CHANGE_MODE_CLASS.
+
2003-02-14 Alexandre Oliva <aoliva@redhat.com>
* config/mn10300/mn10300.c (mn10300_wide_const_load_uses_clr): New
@@ -22,23 +28,23 @@
2003-02-13 Adam Nemet <anemet@lnxw.com>
- PR opt/2391
- * combine.c: Fix spelling in comment.
- (cached_nonzero_bits): New function.
- (cached_num_sign_bit_copies): New function.
+ PR opt/2391
+ * combine.c: Fix spelling in comment.
+ (cached_nonzero_bits): New function.
+ (cached_num_sign_bit_copies): New function.
(nonzero_bits_with_known): New macro.
(num_sign_bit_copies_with_known): New macro.
- (nonzero_bits1): Rename from nonzero_bits. Add three new
+ (nonzero_bits1): Rename from nonzero_bits. Add three new
arguments. Change calls from nonzero_bits to
nonzero_bits_with_known.
- (num_sign_bit_copies1): Rename from num_sign_bit_copies. Add
+ (num_sign_bit_copies1): Rename from num_sign_bit_copies. Add
three new arguments. Change calls from num_sign_bit_copies to
num_sign_bit_copies_with_known.
- (nonzero_bits): New macro.
- (num_sign_bit_copies): New macro.
- (update_table_tick): Don't traverse identical subexpression more
+ (nonzero_bits): New macro.
+ (num_sign_bit_copies): New macro.
+ (update_table_tick): Don't traverse identical subexpression more
than once.
- (get_last_value_validate): Likewise.
+ (get_last_value_validate): Likewise.
2003-02-13 Zack Weinberg <zack@codesourcery.com>
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));