/* PR target/82498 */ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ /* { dg-options "-fsanitize=undefined -fno-sanitize-recover=undefined" } */ #include volatile unsigned int a; volatile unsigned long long b; volatile int c; int main () { a = 0x12345678U; a = __rold (a, 0); if (a != 0x12345678U) __builtin_abort (); a = __rold (a, 32); if (a != 0x12345678U) __builtin_abort (); a = __rold (a, -32); if (a != 0x12345678U) __builtin_abort (); a = __rold (a, 37); if (a != 0x468acf02U) __builtin_abort (); a = __rold (a, -5); if (a != 0x12345678U) __builtin_abort (); a = __rord (a, 0); if (a != 0x12345678U) __builtin_abort (); a = __rord (a, 32); if (a != 0x12345678U) __builtin_abort (); a = __rord (a, -32); if (a != 0x12345678U) __builtin_abort (); a = __rord (a, -37); if (a != 0x468acf02U) __builtin_abort (); a = __rord (a, 5); if (a != 0x12345678U) __builtin_abort (); c = 0; a = __rold (a, c); if (a != 0x12345678U) __builtin_abort (); c = 32; a = __rold (a, c); if (a != 0x12345678U) __builtin_abort (); c = -32; a = __rold (a, c); if (a != 0x12345678U) __builtin_abort (); c = 37; a = __rold (a, c); if (a != 0x468acf02U) __builtin_abort (); c = -5; a = __rold (a, c); if (a != 0x12345678U) __builtin_abort (); c = 0; a = __rord (a, c); if (a != 0x12345678U) __builtin_abort (); c = 32; a = __rord (a, c); if (a != 0x12345678U) __builtin_abort (); c = -32; a = __rord (a, c); if (a != 0x12345678U) __builtin_abort (); c = -37; a = __rord (a, c); if (a != 0x468acf02U) __builtin_abort (); c = 5; a = __rord (a, c); if (a != 0x12345678U) __builtin_abort (); #ifdef __x86_64__ b = 0x123456789abcdef1ULL; b = __rolq (b, 0); if (b != 0x123456789abcdef1ULL) __builtin_abort (); b = __rolq (b, 64); if (b != 0x123456789abcdef1ULL) __builtin_abort (); b = __rolq (b, -64); if (b != 0x123456789abcdef1ULL) __builtin_abort (); b = __rolq (b, 69); if (b != 0x468acf13579bde22ULL) __builtin_abort (); b = __rolq (b, -5); if (b != 0x123456789abcdef1ULL) __builtin_abort (); b = __rorq (b, 0); if (b != 0x123456789abcdef1ULL) __builtin_abort (); b = __rorq (b, 64); if (b != 0x123456789abcdef1ULL) __builtin_abort (); b = __rorq (b, -64); if (b != 0x123456789abcdef1ULL) __builtin_abort (); b = __rorq (b, -69); if (b != 0x468acf13579bde22ULL) __builtin_abort (); b = __rorq (b, 5); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = 0; b = __rolq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = 64; b = __rolq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = -64; b = __rolq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = 69; b = __rolq (b, c); if (b != 0x468acf13579bde22ULL) __builtin_abort (); c = -5; b = __rolq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = 0; b = __rorq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = 64; b = __rorq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = -64; b = __rorq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); c = -69; b = __rorq (b, c); if (b != 0x468acf13579bde22ULL) __builtin_abort (); c = 5; b = __rorq (b, c); if (b != 0x123456789abcdef1ULL) __builtin_abort (); #endif return 0; }