diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2017-03-01 20:24:53 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2017-03-01 20:24:53 +0100 |
commit | 489909059b8c7dfa3b379be229e7cb1feab9675d (patch) | |
tree | d14a19de49ce2626615c2428364e5b61f18883fc /gcc | |
parent | c85ac396f106116a20463313a2c4646a7de61433 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 11 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/invsize-1.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/invsize-2.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/invsize-3.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/invsize-4.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr66274.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/stackalign/asm-1.c | 2 |
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" } */ |