===================================================================
@@ -17646,13 +17646,16 @@ print_reg (rtx x, int code, FILE *file)
switch (msize)
{
+ case 16:
+ case 12:
case 8:
+ if (GENERAL_REGNO_P (regno) && msize > GET_MODE_SIZE (word_mode))
+ warning (0, "unsupported size for integer register");
+ /* FALLTHRU */
case 4:
if (LEGACY_INT_REGNO_P (regno))
- putc (msize == 8 && TARGET_64BIT ? 'r' : 'e', file);
+ putc (msize > 4 && TARGET_64BIT ? 'r' : 'e', file);
/* FALLTHRU */
- case 16:
- case 12:
case 2:
normal:
reg = hi_reg_name[regno];
===================================================================
@@ -0,0 +1,7 @@
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "" } */
+
+void foo (long long x)
+{
+ __asm__ volatile ("# %0" : : "r" (x));
+} /* { dg-warning "unsupported size" } */
===================================================================
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void foo (long double x)
+{
+ __asm__ volatile ("# %0" : : "r" (x));
+} /* { dg-warning "unsupported size" } */
===================================================================
@@ -0,0 +1,7 @@
+/* { dg-do compile { target int128 } } */
+/* { dg-options "" } */
+
+void foo (__int128 x)
+{
+ __asm__ volatile ("# %0" : : "r" (x));
+} /* { dg-warning "unsupported size" } */
===================================================================
@@ -3,7 +3,7 @@
void f()
{
- asm ("push %0" : : "r" ((unsigned long long) 456));
-}
+ asm ("push %0" : : "r" ((unsigned long long) 456 >> 32));
+} /* { dg-warning "unsupported size" } */
-/* { dg-final { scan-assembler-not "push %r" } } */
+/* { dg-final { scan-assembler-not "push\[ \t]+%r" } } */
===================================================================
@@ -4,4 +4,4 @@
/* This case is to detect a compile time regression introduced in stack
branch development. */
-void f(){asm("%0"::"r"(1.5F));}void g(){asm("%0"::"r"(1.5));}
+void f(){asm("%0"::"r"(1.5F));}void g(){asm("%0"::"r"(1.5));} /* { dg-warning "unsupported size" } */