diff options
author | David Wohlferd <dw@LimeGreenSocks.com> | 2014-07-16 22:01:41 +0000 |
---|---|---|
committer | Gerald Pfeifer <gerald@gcc.gnu.org> | 2014-07-16 22:01:41 +0000 |
commit | 6ed6e4e15247af6110d444cef486152fea6f01b5 (patch) | |
tree | 16f8a0144d4056919e5c795dea759378bfbd495c | |
parent | 2fca42b068683dcf510e9d4cd51c4043207427a9 (diff) | |
download | gcc-6ed6e4e15247af6110d444cef486152fea6f01b5.zip gcc-6ed6e4e15247af6110d444cef486152fea6f01b5.tar.gz gcc-6ed6e4e15247af6110d444cef486152fea6f01b5.tar.bz2 |
re PR target/61662 (Incorrect value calculated for _lrotl on LLP64 systems)
PR target/61662
* config/i386/ia32intrin.h: Use __LP64__ to determine size of long.
From-SVN: r212699
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/ia32intrin.h | 14 |
2 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6680787..f3a404f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-07-16 David Wohlferd <dw@LimeGreenSocks.com> + + PR target/61662 + * config/i386/ia32intrin.h: Use __LP64__ to determine size of long. + 2014-07-16 Dodji Seketeli <dodji@redhat.com> Support location tracking for built-in macro tokens diff --git a/gcc/config/i386/ia32intrin.h b/gcc/config/i386/ia32intrin.h index 5e7c893..614b0fa 100644 --- a/gcc/config/i386/ia32intrin.h +++ b/gcc/config/i386/ia32intrin.h @@ -256,11 +256,7 @@ __writeeflags (unsigned long long X) #define _bswap64(a) __bswapq(a) #define _popcnt64(a) __popcntq(a) -#define _lrotl(a,b) __rolq((a), (b)) -#define _lrotr(a,b) __rorq((a), (b)) #else -#define _lrotl(a,b) __rold((a), (b)) -#define _lrotr(a,b) __rord((a), (b)) /* Read flags register */ extern __inline unsigned int @@ -280,6 +276,16 @@ __writeeflags (unsigned int X) #endif +/* On LP64 systems, longs are 64-bit. Use the appropriate rotate + * function. */ +#ifdef __LP64__ +#define _lrotl(a,b) __rolq((a), (b)) +#define _lrotr(a,b) __rorq((a), (b)) +#else +#define _lrotl(a,b) __rold((a), (b)) +#define _lrotr(a,b) __rord((a), (b)) +#endif + #define _bit_scan_forward(a) __bsfd(a) #define _bit_scan_reverse(a) __bsrd(a) #define _bswap(a) __bswapd(a) |