rs6000: Fix a mistake in cstore_si_as_di (PR68865, PR68879)
authorSegher Boessenkool <segher@kernel.crashing.org>
Mon, 14 Dec 2015 16:13:33 +0000 (17:13 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Mon, 14 Dec 2015 16:13:33 +0000 (17:13 +0100)
commit755cd5a907454199a9bff3d6f9f4baa4b298289d
tree862dce9eccdf0578a95c89ab3e4f0eeaf5a5ecaf
parent150cf34781103ff73f2c930777cb514882f73ef2
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.

From-SVN: r231621
gcc/ChangeLog
gcc/config/rs6000/rs6000.md