diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2008-10-28 21:56:49 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2008-10-28 21:56:49 +0000 |
commit | aa72a6ad6f807e16c767985061c2a1024328a21d (patch) | |
tree | cfc69cfb9fc65cae7b78ad851b7d23f90ec327fb | |
parent | 9d801b5d621d54fada7ae88e5b7e22d657b46dfd (diff) |
Remove extendsidi2 expansion for now. It works, but since it only fills
the two SImode subregs of the DImode destination operand, this confuses
the register life analysis and causes gcc to emit wrong warning about
values not being initialized.
Unfortunately, the fallback logic infers a worse sequence (mov + cmp against
zero + ext of the cmp signedness bit, instead of mov + ext of the sign bit),
which wastes an instruction and a register.
This is hopefully a temporary measure until a nonconfusing flavour of the
fast expansion is devised (preferrably one which does not expose the
optimize_reg_copy_3 big-endian bug as well).
-rw-r--r-- | gnu/egcs/gcc/config/m88k/m88k.md | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/gnu/egcs/gcc/config/m88k/m88k.md b/gnu/egcs/gcc/config/m88k/m88k.md index 7a2236a71b5..482282ea6dc 100644 --- a/gnu/egcs/gcc/config/m88k/m88k.md +++ b/gnu/egcs/gcc/config/m88k/m88k.md @@ -2316,15 +2316,6 @@ ;;- sign extension instructions -(define_expand "extendsidi2" - [(set (subreg:SI (match_operand:DI 0 "register_operand" "=r") 1) - (match_operand:SI 1 "general_operand" "g")) - (set (subreg:SI (match_dup 0) 0) - (ashiftrt:SI (subreg:SI (match_dup 0) 1) - (const_int 31)))] - "" - "") - (define_expand "extendhisi2" [(set (match_operand:SI 0 "register_operand" "") (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))] |