diff options
author | Falk Hueffner <falk.hueffner@student.uni-tuebingen.de> | 2003-02-14 14:23:48 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-02-14 14:23:48 -0800 |
commit | ce65116b73931409aa6d9ba7ed3e81a686298ba6 (patch) | |
tree | bc83ac912c675b861d2063805a41e52a80ee42e4 | |
parent | 394a76de7328db70e7511ebb5b271d76e9bac2bf (diff) | |
download | gcc-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/ChangeLog | 26 | ||||
-rw-r--r-- | gcc/reload1.c | 8 |
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)); |