Commit 75a741e8 by Peter Bergner Committed by Peter Bergner

re PR target/84264 (ICE in rs6000_emit_le_vsx_store, at…

re PR target/84264 (ICE in rs6000_emit_le_vsx_store, at config/rs6000/rs6000.c:10367 starting with r256656)

gcc/
	PR target/84264
	* config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.

gcc/testsuite/
	PR target/84264
	* g++.dg/pr84264.C: New test.

From-SVN: r258251
parent 5625e747
2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
PR target/84264
* config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
2018-03-05 Richard Biener <rguenther@suse.de>
PR tree-optimization/84486
......
......@@ -132,12 +132,19 @@
&& !vlogical_operand (operands[1], <MODE>mode))
operands[1] = force_reg (<MODE>mode, operands[1]);
}
/* When generating load/store instructions to/from VSX registers on
pre-power9 hardware in little endian mode, we need to emit register
permute instructions to byte swap the contents, since the VSX load/store
instructions do not include a byte swap as part of their operation.
Altivec loads and stores have no such problem, so we skip them below. */
if (!BYTES_BIG_ENDIAN
&& VECTOR_MEM_VSX_P (<MODE>mode)
&& !TARGET_P9_VECTOR
&& !gpr_or_gpr_p (operands[0], operands[1])
&& (memory_operand (operands[0], <MODE>mode)
^ memory_operand (operands[1], <MODE>mode)))
&& ((memory_operand (operands[0], <MODE>mode)
&& !altivec_indexed_or_indirect_operand(operands[0], <MODE>mode))
^ (memory_operand (operands[1], <MODE>mode)
&& !altivec_indexed_or_indirect_operand(operands[1], <MODE>mode))))
{
rs6000_emit_le_vsx_move (operands[0], operands[1], <MODE>mode);
DONE;
......
2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
PR target/84264
* g++.dg/pr84264.C: New test.
2018-03-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84618
......
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-options "-w -O1 -fstack-protector-strong" } */
void _setjmp ();
void a (unsigned long *);
void
b (void)
{
for (;;)
{
_setjmp ();
unsigned long args[9]{};
a (args);
}
}
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