gnu / gcc / d769c5040874bf9546f2524f3f1d2a894165f92a / . / gcc / testsuite / gcc.c-torture / execute / pr40493.c

extern void abort (void); | |

typedef union i386_operand_type | |

{ | |

struct | |

{ | |

unsigned int reg8:1; | |

unsigned int reg16:1; | |

unsigned int reg32:1; | |

unsigned int reg64:1; | |

unsigned int floatreg:1; | |

unsigned int regmmx:1; | |

unsigned int regxmm:1; | |

unsigned int regymm:1; | |

unsigned int control:1; | |

unsigned int debug:1; | |

unsigned int test:1; | |

unsigned int sreg2:1; | |

unsigned int sreg3:1; | |

unsigned int imm1:1; | |

unsigned int imm8:1; | |

unsigned int imm8s:1; | |

unsigned int imm16:1; | |

unsigned int imm32:1; | |

unsigned int imm32s:1; | |

unsigned int imm64:1; | |

unsigned int disp8:1; | |

unsigned int disp16:1; | |

unsigned int disp32:1; | |

unsigned int disp32s:1; | |

unsigned int disp64:1; | |

unsigned int acc:1; | |

unsigned int floatacc:1; | |

unsigned int baseindex:1; | |

unsigned int inoutportreg:1; | |

unsigned int shiftcount:1; | |

unsigned int jumpabsolute:1; | |

unsigned int esseg:1; | |

unsigned int regmem:1; | |

unsigned int mem:1; | |

unsigned int byte:1; | |

unsigned int word:1; | |

unsigned int dword:1; | |

unsigned int fword:1; | |

unsigned int qword:1; | |

unsigned int tbyte:1; | |

unsigned int xmmword:1; | |

unsigned int ymmword:1; | |

unsigned int unspecified:1; | |

unsigned int anysize:1; | |

} bitfield; | |

unsigned int array[2]; | |

} i386_operand_type; | |

unsigned int x00, x01, y00, y01; | |

int main (int argc, char *argv[]) | |

{ | |

i386_operand_type a,b,c,d; | |

a.bitfield.reg16 = 1; | |

a.bitfield.imm16 = 0; | |

a.array[1] = 22; | |

b = a; | |

x00 = b.array[0]; | |

x01 = b.array[1]; | |

c = b; | |

y00 = c.array[0]; | |

y01 = c.array[1]; | |

d = c; | |

if (d.bitfield.reg16 != 1) | |

abort(); | |

if (d.bitfield.imm16 != 0) | |

abort(); | |

if (d.array[1] != 22) | |

abort(); | |

return 0; | |

} |