From ce65116b73931409aa6d9ba7ed3e81a686298ba6 Mon Sep 17 00:00:00 2001 From: Falk Hueffner Date: Fri, 14 Feb 2003 14:23:48 -0800 Subject: [PATCH] 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 --- gcc/ChangeLog | 26 ++++++++++++++++---------- gcc/reload1.c | 8 +++++++- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 34128fe3be2..c8021cdf9ee 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-02-14 Falk Hueffner + + PR optimization/7702 + * reload1.c (reload_cse_simplify_set): Honor + CANNOT_CHANGE_MODE_CLASS. + 2003-02-14 Alexandre Oliva * config/mn10300/mn10300.c (mn10300_wide_const_load_uses_clr): New @@ -22,23 +28,23 @@ 2003-02-13 Adam Nemet - 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 diff --git a/gcc/reload1.c b/gcc/reload1.c index e2726409330..441a447f014 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)); -- 2.30.2