aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2017-03-01 20:24:53 +0100
committerUros Bizjak <uros@gcc.gnu.org>2017-03-01 20:24:53 +0100
commit489909059b8c7dfa3b379be229e7cb1feab9675d (patch)
treed14a19de49ce2626615c2428364e5b61f18883fc /gcc
parentc85ac396f106116a20463313a2c4646a7de61433 (diff)
downloadgcc-489909059b8c7dfa3b379be229e7cb1feab9675d.zip
gcc-489909059b8c7dfa3b379be229e7cb1feab9675d.tar.gz
gcc-489909059b8c7dfa3b379be229e7cb1feab9675d.tar.bz2
i386.c (print_reg): Warn for values of unsupported size in integer register.
* config/i386/i386.c (print_reg): Warn for values of unsupported size in integer register. testsuite/ChangeLog: * gcc.target/i386/invsize-2.c: New test. * gcc.target/i386/invsize-3.c: Ditto. * gcc.target/i386/invsize-4.c: Ditto. * gcc.target/i386/pr66274.c: Expect "unsuported size" warning. * gcc.target/i386/stackalign/asm-1.c: Ditto. From-SVN: r245815
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c11
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.target/i386/invsize-1.c1
-rw-r--r--gcc/testsuite/gcc.target/i386/invsize-2.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/invsize-3.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/invsize-4.c7
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66274.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/stackalign/asm-1.c2
9 files changed, 46 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c4f8798..d791c18 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2017-03-01 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (print_reg): Warn for values of
+ unsupported size in integer register.
+
2017-03-01 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/79439
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2b11aa1..754c016 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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];
@@ -17661,7 +17664,7 @@ print_reg (rtx x, int code, FILE *file)
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");
+ error ("unsupported size for integer register");
reg = qi_reg_name[regno];
break;
case 0:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b3ba66b..2b73362 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2017-03-01 Uros Bizjak <ubizjak@gmail.com>
+
+ * gcc.target/i386/invsize-2.c: New test.
+ * gcc.target/i386/invsize-3.c: Ditto.
+ * gcc.target/i386/invsize-4.c: Ditto.
+ * gcc.target/i386/pr66274.c: Expect "unsuported size" warning.
+ * gcc.target/i386/stackalign/asm-1.c: Ditto.
+
2017-03-01 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/79439
diff --git a/gcc/testsuite/gcc.target/i386/invsize-1.c b/gcc/testsuite/gcc.target/i386/invsize-1.c
index f7e5921..eefa5fa 100644
--- a/gcc/testsuite/gcc.target/i386/invsize-1.c
+++ b/gcc/testsuite/gcc.target/i386/invsize-1.c
@@ -1,4 +1,5 @@
/* { dg-do compile { target ia32 } } */
+/* { dg-options "" } */
void foo (char x)
{
diff --git a/gcc/testsuite/gcc.target/i386/invsize-2.c b/gcc/testsuite/gcc.target/i386/invsize-2.c
new file mode 100644
index 0000000..7a9825a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/invsize-2.c
@@ -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" } */
diff --git a/gcc/testsuite/gcc.target/i386/invsize-3.c b/gcc/testsuite/gcc.target/i386/invsize-3.c
new file mode 100644
index 0000000..bd23353
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/invsize-3.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void foo (long double x)
+{
+ __asm__ volatile ("# %0" : : "r" (x));
+} /* { dg-warning "unsupported size" } */
diff --git a/gcc/testsuite/gcc.target/i386/invsize-4.c b/gcc/testsuite/gcc.target/i386/invsize-4.c
new file mode 100644
index 0000000..d4a6d46
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/invsize-4.c
@@ -0,0 +1,7 @@
+/* { dg-do compile { target int128 } } */
+/* { dg-options "" } */
+
+void foo (__int128 x)
+{
+ __asm__ volatile ("# %0" : : "r" (x));
+} /* { dg-warning "unsupported size" } */
diff --git a/gcc/testsuite/gcc.target/i386/pr66274.c b/gcc/testsuite/gcc.target/i386/pr66274.c
index 59969eb..caf0d34 100644
--- a/gcc/testsuite/gcc.target/i386/pr66274.c
+++ b/gcc/testsuite/gcc.target/i386/pr66274.c
@@ -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" } } */
diff --git a/gcc/testsuite/gcc.target/i386/stackalign/asm-1.c b/gcc/testsuite/gcc.target/i386/stackalign/asm-1.c
index 126a2b8a..e5ea06d 100644
--- a/gcc/testsuite/gcc.target/i386/stackalign/asm-1.c
+++ b/gcc/testsuite/gcc.target/i386/stackalign/asm-1.c
@@ -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" } */