/* https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=223576 */ /* SRA failed to canonicalize bit-field types, introducing type mismatches. */ /* { dg-do compile } */ /* { dg-options "-O2" } */ struct A { int a:16; /* These dummy bit-fields are here to prevent GCC 4.2+ from merging the bit-field compares into a single word compare, which disables SRA. */ int a2:16; int a3:16; int a4:16; int b:8; bool operator==(A const x) const { return (this->a == x.a && this->b == x.b); } }; bool foo (A const x, A const y) { return x == y; }