--- Comment #6 from schwab at linux-m68k dot org 2010-04-07 16:15 ---
MOVEA always sign extends.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43675
--- Comment #5 from mkuvyrkov at gcc dot gnu dot org 2010-04-07 16:06
---
Closing the PR.
--
mkuvyrkov at gcc dot gnu dot org changed:
What|Removed |Added
St
--- Comment #4 from maxim at codesourcery dot com 2010-04-07 16:04 ---
Hm, move.w preserving upper bits seems to apply only if destination is a data
register then.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43675
--- Comment #3 from nizze86 at hotmail dot com 2010-04-07 15:42 ---
I am sorry, it appears i am mistaken, since the dest is an address reg, movea
is used which apparently *does* sign extend word size source to 32 bits while a
move to a d reg does not.
Again sorry for the noise.
--
h
--- Comment #2 from maxim at codesourcery dot com 2010-04-07 15:24 ---
The problem is in 68k_extendhisi2 pattern, second alternative:
(define_insn "*68k_extendhisi2"
[(set (match_operand:SI 0 "nonimmediate_operand" "=*d,a")
(sign_extend:SI
(match_operand:HI 1 "nonimmed
--- Comment #1 from rguenth at gcc dot gnu dot org 2010-04-07 15:03 ---
*** Bug 43676 has been marked as a duplicate of this bug. ***
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43675