/* PR target/84431 */ /* { dg-do compile } */ /* { dg-options "-O2" } */ #ifdef __SIZEOF_INT128__ typedef unsigned __int128 U; typedef signed __int128 S; # define M 63 #else typedef unsigned long long U; typedef signed long long S; # define M 31 #endif S f1 (S a, int s) { return a >> (s & M); } U f2 (U a, int s) { return a >> (s & M); } U f3 (U a, int s) { return a << (s & M); } /* { dg-final { scan-assembler-not "and" } } */