+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
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;
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;
fputs ("lge", file); /* 5 */
break;
default:
- gcc_unreachable ();
+ output_operand_lossage ("invalid %%V value");
}
break;
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)
+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.
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 } } } } } */
--- /dev/null
+/* 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" } */
+}