backport: re PR target/81348 (PowerPC64: Code built with -mcpu=power9 hits SEGV in RTL split2)
[gcc] 2017-07-07 Michael Meissner <meissner@linux.vnet.ibm.com> Backport from mainline PR target/81348 * config/rs6000/rs6000.md (HI sign_extend splitter): Use the correct operand in doing the split. [gcc/testsuite] 2017-07-07 Michael Meissner <meissner@linux.vnet.ibm.com> Backport from mainline 2017-07-07 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/81348 * gcc.target/powerpc/pr81348.c: New test. From-SVN: r250060
This commit is contained in:
parent
0316d24f7a
commit
69115c8c9d
|
@ -1,3 +1,12 @@
|
|||
2017-07-07 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
2017-07-07 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
PR target/81348
|
||||
* config/rs6000/rs6000.md (HI sign_extend splitter): Use the
|
||||
correct operand in doing the split.
|
||||
|
||||
2017-07-07 Jose E. Marchesi <jose.marchesi@oracle.com>
|
||||
|
||||
* config/sparc/m8.md: New file.
|
||||
|
|
|
@ -954,7 +954,7 @@
|
|||
(set (match_dup 0)
|
||||
(sign_extend:EXTHI (match_dup 2)))]
|
||||
{
|
||||
operands[2] = gen_rtx_REG (HImode, REGNO (operands[1]));
|
||||
operands[2] = gen_rtx_REG (HImode, REGNO (operands[0]));
|
||||
})
|
||||
|
||||
(define_insn "*extendhi<mode>2_noload"
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2017-07-07 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
2017-07-07 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
PR target/81348
|
||||
* gcc.target/powerpc/pr81348.c: New test.
|
||||
|
||||
2017-07-07 Jose E. Marchesi <jose.marchesi@oracle.com>
|
||||
|
||||
* gcc.target/sparc/dictunpack.c: New file.
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/* { dg-do compile { target { powerpc64*-*-* && lp64 } } } */
|
||||
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
|
||||
/* { dg-require-effective-target powerpc_p9vector_ok } */
|
||||
/* { dg-options "-mcpu=power9 -Og" } */
|
||||
|
||||
/* PR target/81348: Compiler died in doing short->float conversion due to using
|
||||
the wrong register in a define_split. */
|
||||
|
||||
int a;
|
||||
short b;
|
||||
float ***c;
|
||||
|
||||
void d(void)
|
||||
{
|
||||
int e = 3;
|
||||
|
||||
if (a)
|
||||
e = b;
|
||||
|
||||
***c = e;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler {\mlxsihzx\M} } } */
|
||||
/* { dg-final { scan-assembler {\mvextsh2d\M} } } */
|
Loading…
Reference in New Issue