--- 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
--- 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
--- 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.
--
--- 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 #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
--- 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