modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/shiftdi.c (about) 1 /* { dg-require-effective-target int32plus } */ 2 3 /* Failed on sparc with -mv8plus because sparc.c:set_extends() thought 4 erroneously that SImode ASHIFT chops the upper bits, it does not. */ 5 6 typedef unsigned long long uint64; 7 8 void g(uint64 x, int y, int z, uint64 *p) 9 { 10 unsigned w = ((x >> y) & 0xffffffffULL) << (z & 0x1f); 11 *p |= (w & 0xffffffffULL) << z; 12 } 13 14 int main(void) 15 { 16 uint64 a = 0; 17 g(0xdeadbeef01234567ULL, 0, 0, &a); 18 return (a == 0x01234567) ? 0 : 1; 19 } 20 21 22