1 /* Test whether an AND mask or'ed with the know zero bits that equals a mode
2 mask is a candidate for zero extendion. */
4 /* { dg-do compile { target i?86-*-* x86_64-*-* s390*-*-* aarch64*-*-* } } */
5 /* { dg-require-effective-target lp64 } */
6 /* { dg-options "-O3 -dP -fdump-rtl-combine" } */
8 unsigned long foo (unsigned char c
)
13 i
= ((unsigned int)c
) << 8;
14 i
|= ((unsigned int)c
) << 20;
23 unsigned long bar (unsigned char c
)
28 i
= ((unsigned int)c
) << 8;
29 i
|= ((unsigned int)c
) << 20;
38 /* Check that an AND expression was used. */
39 /* { dg-final { scan-assembler-times "\\(and:" 2 { target { ! aarch64*-*-* } } } } */
40 /* { dg-final { scan-rtl-dump "\\(and:DI" "combine" { target aarch64*-*-* } } } */
41 /* { dg-final { scan-rtl-dump "\\(and:SI" "combine" { target aarch64*-*-* } } } */