diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-06-04 18:04:36 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-06-04 18:04:36 +0000 |
commit | 84e81e84adc59d4a0ed070b49f4f888c191acb98 (patch) | |
tree | 829c85ccd2ce524faa3bdeb601db3f7f80cc282f /gcc/integrate.c | |
parent | b14e5da57c59fd64cba5cfc30634a137f0685274 (diff) | |
download | gcc-84e81e84adc59d4a0ed070b49f4f888c191acb98.tar.gz |
* rtlanal.c (operand_preference): Fix preference for objects.
* gcse.c (handle_avail_expr): Be prepared to handle single_set
parallels.
* combine.c (if_then_else_cond): Use simplify_subreg instead
of operand_subword.
* integreate.c (sub_constants): Likewise.
* emit-rtl.c (constant_subword): Deprecate; remove most of code
and use simplify_gen_subreg.
Mon Jun 4 19:55:23 CEST 2001 Lars Brinkhoff <lars@nocrew.org>
* sibcall.c (skip_copy_to_return_value): recognize the situation
when the called function's return value is copied into an
intermediate pseudo, and then into the calling functions return
value register.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@42864 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/integrate.c')
-rw-r--r-- | gcc/integrate.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c index 9b7a4e74d51..ff9d33f20c4 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -2411,19 +2411,14 @@ subst_constants (loc, insn, map, memonly) valid. We handle two cases: extracting a full word in an integral mode and extracting the low part. */ subst_constants (&inner, NULL_RTX, map, 0); - - if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT - && GET_MODE_SIZE (GET_MODE (x)) == UNITS_PER_WORD - && GET_MODE (SUBREG_REG (x)) != VOIDmode) - new = operand_subword (inner, SUBREG_BYTE (x) / UNITS_PER_WORD, - 0, GET_MODE (SUBREG_REG (x))); - - cancel_changes (num_changes); - if (new == 0 && subreg_lowpart_p (x)) - new = gen_lowpart_common (GET_MODE (x), inner); + new = simplify_gen_subreg (GET_MODE (x), inner, + GET_MODE (SUBREG_REG (x)), + SUBREG_BYTE (x)); if (new) validate_change (insn, loc, new, 1); + else + cancel_changes (num_changes); return; } |