typedef struct { unsigned live_mask:16; } node_header; extern void bar(unsigned); void foo(node_header *n) { unsigned transfer_masks[4]; unsigned i; unsigned mask = ((n)->live_mask); unsigned input_mask; if (mask) { input_mask = ((mask << 2) | (mask << 1) | (mask >> 1) | (mask >> 2)) & 7; transfer_masks[0] = input_mask; transfer_masks[1] = input_mask; } for(i=0; i < 4; i++) bar(transfer_masks[i]); }