/* PR target/pr78794 */ /* { dg-do compile { target ia32 } } */ /* { dg-options "-O2 -march=slm -mno-bmi -mno-stackrealign" } */ /* { dg-final { scan-assembler "pandn" } } */ typedef unsigned long long ull; struct S1 { float x; ull y; }; struct S2 { int a1; struct S1 *node; int *a2; }; void foo(int c1, int c2, int c3, struct S2 *reg) { int i; for(i=0; ia1; i++) if(reg->node[i].y & ((ull) 1 << c1)) { if(reg->node[i].y & ((ull) 1 << c2)) reg->node[i].y ^= ((ull) 1 << c3); } }