i386.c (print_reg): Error out for values of 8-bit size in invalid integer register.
authorUros Bizjak <ubizjak@gmail.com>
Tue, 28 Feb 2017 18:03:16 +0000 (19:03 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 28 Feb 2017 18:03:16 +0000 (19:03 +0100)
* config/i386/i386.c (print_reg): Error out for values
of 8-bit size in invalid integer register.

testsuite/ChangeLog:

* gcc.target/i386/invsize-1.c: New test.

From-SVN: r245785

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/invsize-1.c [new file with mode: 0644]

index 3c6dbf414d2b0cc751fad4763f7e2eae5c355a11..880679112e31102501cbdb2904f156904e5decb9 100644 (file)
@@ -1,3 +1,8 @@
+2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (print_reg): Error out for values
+       of 8-bit size in invalid integer register.
+
 2017-02-28  Martin Sebor  <msebor@redhat.com>
 
        PR tree-optimization/79691
index b35b56cbdcf2470ee50aeb02f3941f092d3fbd1b..2b11aa1c37d08cffd755537c5fafb1020313c617 100644 (file)
@@ -17660,6 +17660,8 @@ print_reg (rtx x, int code, FILE *file)
     case 1:
       if (regno >= ARRAY_SIZE (qi_reg_name))
        goto normal;
+      if (!ANY_QI_REGNO_P (regno))
+       error ("unsupported size for integer register in 32-bit mode");
       reg = qi_reg_name[regno];
       break;
     case 0:
index 3e14d498f6d8c62859d0251e04a81e6046e0642d..a9ff533fb994689df0e9a55a422076a83653d00f 100644 (file)
@@ -1,3 +1,7 @@
+2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
+
+       * gcc.target/i386/invsize-1.c: New test.
+
 2017-02-28  Martin Sebor  <msebor@redhat.com>
 
        PR tree-optimization/79691
diff --git a/gcc/testsuite/gcc.target/i386/invsize-1.c b/gcc/testsuite/gcc.target/i386/invsize-1.c
new file mode 100644 (file)
index 0000000..f7e5921
--- /dev/null
@@ -0,0 +1,8 @@
+/* { dg-do compile { target ia32 } } */
+
+void foo (char x)
+{
+  register char rx __asm ("si") = x;
+
+  __asm__ volatile ("# %0" : : "r" (rx));
+} /* { dg-error "unsupported size" }  */