1 /* { dg-do compile } */ 2 /* { dg-options "-O2" } */ 3 4 unsigned array[4]; 5 6 #ifdef _WIN64 7 __extension__ typedef unsigned long long TYPE; 8 #else 9 #define TYPE unsigned long 10 #endif 11 foo(TYPE x)12unsigned foo(TYPE x) 13 { 14 return array[(x>>2)&3ul]; 15 } 16 17 /* { dg-final { scan-assembler-not "shr\[^\\n\]*2" } } */ 18 /* { dg-final { scan-assembler "and\[^\\n\]*12" } } */ 19