{
machine_mode mode;
short imm;
- bool b = s390_constant_via_vrepi_p (x, &mode, &imm);
- gcc_checking_assert (b);
+ if (!s390_constant_via_vrepi_p (x, &mode, &imm))
+ {
+ output_operand_lossage ("invalid constant for output "
+ "modifier '%c'", code);
+ return;
+ }
switch (mode)
{
case QImode:
{
machine_mode mode;
int start, end;
- bool b = s390_constant_via_vgm_p (x, &mode, &start, &end);
- gcc_checking_assert (b);
+ if (!s390_constant_via_vgm_p (x, &mode, &start, &end))
+ {
+ output_operand_lossage ("invalid constant for output "
+ "modifier '%c'", code);
+ return;
+ }
switch (mode)
{
case QImode:
case 'r':
{
unsigned mask;
- bool b = s390_constant_via_vgbm_p (x, &mask);
- gcc_checking_assert (b);
+ if (!s390_constant_via_vgbm_p (x, &mask))
+ {
+ output_operand_lossage ("invalid constant for output "
+ "modifier '%c'", code);
+ return;
+ }
fprintf (file, "%u", mask);
}
return;
--- /dev/null
+/* PR target/118511 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+void
+foo (void)
+{
+ asm volatile ("# %p0" : : "d" (1)); /* { dg-error "invalid 'asm': invalid constant for output modifier 'p'" } */
+ asm volatile ("# %q0" : : "d" (1)); /* { dg-error "invalid 'asm': invalid constant for output modifier 'q'" } */
+ asm volatile ("# %r0" : : "d" (1)); /* { dg-error "invalid 'asm': invalid constant for output modifier 'r'" } */
+}