rs6000: Fix a mistake in cstore_si_as_di (PR68865, PR68879)
commit89b07b7d2e00f7024e9b0ea17d60c62a17f7abf5
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Dec 2015 16:13:33 +0000 (14 16:13 +0000)
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Dec 2015 16:13:33 +0000 (14 16:13 +0000)
tree862dce9eccdf0578a95c89ab3e4f0eeaf5a5ecaf
parent4a815efc2236d9b18fcef5d87ccde6ea67d980ed
rs6000: Fix a mistake in cstore_si_as_di (PR68865, PR68879)

convert_move does not know how to zero-extend a constant integer to the
target mode -- simply because it does not know the source mode.  As a
result, 32-bit SImode with the high bit set would be effectively sign-
extended instead of zero-extended.

This patch fixes it.

PR target/68865
PR target/68879
* config/rs6000/rs6000.md (cstore_si_as_di): Force all operands
into registers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231621 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/rs6000/rs6000.md