aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2017-02-28 19:03:16 +0100
committerUros Bizjak <uros@gcc.gnu.org>2017-02-28 19:03:16 +0100
commit2af0c3edd190d66ad9caa66fd98167669487c050 (patch)
tree9abb6bf35effdef94b6021662b79ab3159660785
parent203ced0a773b11b1a364f67cd35b4d69f0438fb5 (diff)
downloadgcc-2af0c3edd190d66ad9caa66fd98167669487c050.zip
gcc-2af0c3edd190d66ad9caa66fd98167669487c050.tar.gz
gcc-2af0c3edd190d66ad9caa66fd98167669487c050.tar.bz2
i386.c (print_reg): Error out for values of 8-bit size in invalid integer register.
* 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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/i386/invsize-1.c8
4 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3c6dbf4..8806791 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b35b56c..2b11aa1 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3e14d49..a9ff533 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..f7e5921
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/invsize-1.c
@@ -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" } */