Commit 8f953899 by Segher Boessenkool Committed by Segher Boessenkool

arm: Generate correct const_ints (PR86640)

In arm_block_set_aligned_vect 8-bit constants are generated as zero-
extended const_ints, not sign-extended as required.  Fix that.


	PR target/86640
	* config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
	instead of GEN_INT.

From-SVN: r263075
parent a64ede72
2018-07-30 Segher Boessenkool <segher@kernel.crashing.org>
PR target/86640
* config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
instead of GEN_INT.
2018-07-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
* tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
......
......@@ -30046,7 +30046,6 @@ arm_block_set_aligned_vect (rtx dstbase,
rtx dst, addr, mem;
rtx val_vec, reg;
machine_mode mode;
unsigned HOST_WIDE_INT v = value;
unsigned int offset = 0;
gcc_assert ((align & 0x3) == 0);
......@@ -30065,10 +30064,8 @@ arm_block_set_aligned_vect (rtx dstbase,
dst = copy_addr_to_reg (XEXP (dstbase, 0));
v = sext_hwi (v, BITS_PER_WORD);
reg = gen_reg_rtx (mode);
val_vec = gen_const_vec_duplicate (mode, GEN_INT (v));
val_vec = gen_const_vec_duplicate (mode, gen_int_mode (value, QImode));
/* Emit instruction loading the constant value. */
emit_move_insn (reg, val_vec);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment