diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-10-12 19:34:07 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-10-12 19:34:07 +0200 |
commit | b979a5a601be9ee8c922ec7e3fdb94cd9746a10e (patch) | |
tree | c6886f17791f37a97abb5b7df04e9e2e4aa18274 | |
parent | 3176632ecd20af3d433edb1da834b08bcf0e0e61 (diff) | |
download | gcc-b979a5a601be9ee8c922ec7e3fdb94cd9746a10e.zip gcc-b979a5a601be9ee8c922ec7e3fdb94cd9746a10e.tar.gz gcc-b979a5a601be9ee8c922ec7e3fdb94cd9746a10e.tar.bz2 |
backport: re PR target/87550 (Intrinsics for rdpmc (__rdpmc, __builtin_ia32_rdpmc) are interpreted as pure functions)
Backported from mainline
2018-10-10 Jakub Jelinek <jakub@redhat.com>
PR target/87550
* config/i386/i386.c (bdesc_args): Move IX86_BUILTIN_RDPMC
from here to ...
(bdesc_special_args): ... here.
* gcc.target/i386/pr87550.c: New test.
From-SVN: r265122
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr87550.c | 21 |
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d579428..b764bdd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2018-10-12 Jakub Jelinek <jakub@redhat.com> Backported from mainline + 2018-10-10 Jakub Jelinek <jakub@redhat.com> + + PR target/87550 + * config/i386/i386.c (bdesc_args): Move IX86_BUILTIN_RDPMC + from here to ... + (bdesc_special_args): ... here. + 2018-09-12 Jakub Jelinek <jakub@redhat.com> PR middle-end/87248 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e9935eb..35ce385 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -33509,6 +33509,7 @@ static const struct builtin_description bdesc_special_args[] = { { 0, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID }, { 0, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED }, + { 0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT }, { 0, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID }, /* 80387 (for use internally for atomic compound assignment). */ @@ -33806,7 +33807,6 @@ static const struct builtin_description bdesc_args[] = { { 0, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT }, { OPTION_MASK_ISA_64BIT, CODE_FOR_bsr_rex64, "__builtin_ia32_bsrdi", IX86_BUILTIN_BSRDI, UNKNOWN, (int) INT64_FTYPE_INT64 }, - { 0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT }, { 0, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT }, { 0, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT }, { 0, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT }, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index af7055f..3c3ff11 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2018-10-12 Jakub Jelinek <jakub@redhat.com> Backported from mainline + 2018-10-10 Jakub Jelinek <jakub@redhat.com> + + PR target/87550 + * gcc.target/i386/pr87550.c: New test. + 2018-09-12 Jakub Jelinek <jakub@redhat.com> PR middle-end/87248 diff --git a/gcc/testsuite/gcc.target/i386/pr87550.c b/gcc/testsuite/gcc.target/i386/pr87550.c new file mode 100644 index 0000000..ef77e32 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr87550.c @@ -0,0 +1,21 @@ +/* PR target/87550 */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ + +#include <x86intrin.h> + +int +foo (int x) +{ + return __rdtsc () + __rdtsc (); +} + +/* { dg-final { scan-assembler-times "\trdtsc\[\n\r]" 2 } } */ + +int +bar (int x) +{ + return __rdpmc (0) + __rdpmc (0); +} + +/* { dg-final { scan-assembler-times "\trdpmc\[\n\r]" 2 } } */ |