mirror of git://gcc.gnu.org/git/gcc.git
re PR target/88188 (ICE in print_operand, at config/rs6000/rs6000.c)
PR target/88188 * config/rs6000/rs6000.c (print_operand) <case 'D'>: Use output_operand_lossage instead of gcc_assert. <case 't'>: Likewise. <case 'z'>: Likewise. <case 'V'>: Use output_operand_lossage instead of gcc_unreachable. * gcc.target/powerpc/pr88188.c: New test. From-SVN: r266515
This commit is contained in:
parent
cece89d0dd
commit
f316c3e5a7
|
|
@ -1,3 +1,12 @@
|
|||
2018-11-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/88188
|
||||
* config/rs6000/rs6000.c (print_operand) <case 'D'>: Use
|
||||
output_operand_lossage instead of gcc_assert.
|
||||
<case 't'>: Likewise.
|
||||
<case 'z'>: Likewise.
|
||||
<case 'V'>: Use output_operand_lossage instead of gcc_unreachable.
|
||||
|
||||
2018-11-27 Jeff Law <law@redhat.com>
|
||||
|
||||
* config/riscv/riscv (riscv_block_mvoe_straight): Use RETURN_BEGIN
|
||||
|
|
|
|||
|
|
@ -20644,7 +20644,11 @@ print_operand (FILE *file, rtx x, int code)
|
|||
|
||||
case 'D':
|
||||
/* Like 'J' but get to the GT bit only. */
|
||||
gcc_assert (REG_P (x));
|
||||
if (!REG_P (x))
|
||||
{
|
||||
output_operand_lossage ("invalid %%D value");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Bit 1 is GT bit. */
|
||||
i = 4 * (REGNO (x) - CR0_REGNO) + 1;
|
||||
|
|
@ -20900,7 +20904,11 @@ print_operand (FILE *file, rtx x, int code)
|
|||
|
||||
case 't':
|
||||
/* Like 'J' but get to the OVERFLOW/UNORDERED bit. */
|
||||
gcc_assert (REG_P (x) && GET_MODE (x) == CCmode);
|
||||
if (!REG_P (x) || GET_MODE (x) != CCmode)
|
||||
{
|
||||
output_operand_lossage ("invalid %%t value");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Bit 3 is OV bit. */
|
||||
i = 4 * (REGNO (x) - CR0_REGNO) + 3;
|
||||
|
|
@ -20989,7 +20997,7 @@ print_operand (FILE *file, rtx x, int code)
|
|||
fputs ("lge", file); /* 5 */
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
output_operand_lossage ("invalid %%V value");
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -21059,7 +21067,11 @@ print_operand (FILE *file, rtx x, int code)
|
|||
names. If we are configured for System V (or the embedded ABI) on
|
||||
the PowerPC, do not emit the period, since those systems do not use
|
||||
TOCs and the like. */
|
||||
gcc_assert (GET_CODE (x) == SYMBOL_REF);
|
||||
if (!SYMBOL_REF_P (x))
|
||||
{
|
||||
output_operand_lossage ("invalid %%z value");
|
||||
return;
|
||||
}
|
||||
|
||||
/* For macho, check to see if we need a stub. */
|
||||
if (TARGET_MACHO)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2018-11-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/88188
|
||||
* gcc.target/powerpc/pr88188.c: New test.
|
||||
|
||||
2018-11-27 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* gfortran.dg/simd-builtins-1.f90: New test.
|
||||
|
|
|
|||
|
|
@ -23,5 +23,5 @@ int h(int a, int b, int c, int d)
|
|||
return a;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "if" 0 "optimized" { target { ! logical_op_short_circuit } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "if" 2 "optimized" { target logical_op_short_circuit } } } */
|
||||
/* { dg-final { scan-tree-dump-times "if" 0 "optimized" { target { { ! logical_op_short_circuit } || branch_cost } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "if" 2 "optimized" { target { logical_op_short_circuit && { ! branch_cost } } } } } */
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
/* PR target/88188 */
|
||||
/* { dg-do compile } */
|
||||
|
||||
int m;
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
__asm volatile ("%D0" : : "m" (m)); /* { dg-error "invalid %D value" } */
|
||||
__asm volatile ("%t0" : : "m" (m)); /* { dg-error "invalid %t value" } */
|
||||
__asm volatile ("%V0" : : "r" (0)); /* { dg-error "invalid %V value" } */
|
||||
__asm volatile ("%z0" : : "r" (0)); /* { dg-error "invalid %z value" } */
|
||||
}
|
||||
Loading…
Reference in New Issue