summaryrefslogtreecommitdiff
path: root/gcc/rtlanal.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@gcc.gnu.org>2001-06-04 18:04:36 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2001-06-04 18:04:36 +0000
commit0631e0bfb7d40fd3cb58d2d5400075f49000ab51 (patch)
tree829c85ccd2ce524faa3bdeb601db3f7f80cc282f /gcc/rtlanal.c
parent5c626f5260d6e2f48bdbd5461b74d11fdd02afe0 (diff)
downloadgcc-0631e0bfb7d40fd3cb58d2d5400075f49000ab51.tar.gz
rtlanal.c (operand_preference): Fix preference for objects.
* 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. From-SVN: r42864
Diffstat (limited to 'gcc/rtlanal.c')
-rw-r--r--gcc/rtlanal.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 0f0f6cd1fc5..ca144159cec 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -2515,16 +2515,16 @@ operand_preference (op)
{
/* Constants always come the second operand. Prefer "nice" constants. */
if (GET_CODE (op) == CONST_INT)
- return -4;
+ return -5;
if (GET_CODE (op) == CONST_DOUBLE)
- return -3;
+ return -4;
if (CONSTANT_P (op))
- return -2;
+ return -3;
/* SUBREGs of objects should come second. */
if (GET_CODE (op) == SUBREG
&& GET_RTX_CLASS (GET_CODE (SUBREG_REG (op))) == 'o')
- return -1;
+ return -2;
/* If only one operand is a `neg', `not',
`mult', `plus', or `minus' expression, it will be the first
@@ -2534,9 +2534,10 @@ operand_preference (op)
|| GET_CODE (op) == MINUS)
return 2;
- /* Complex expressions should be the first. */
+ /* Complex expressions should be the first, so decrease priority
+ of objects. */
if (GET_RTX_CLASS (GET_CODE (op)) == 'o')
- return 1;
+ return -1;
return 0;
}